在UIScrollView中禁用2个手指滚动

sti*_*poy 19 objective-c uiscrollview uigesturerecognizer

我想在我的手机中禁用双指滚动UIScrollView.
我将其子类化并使用以下代码调整其内置手势识别器:

for (UIGestureRecognizer *mgestureRecognizer in scroller.gestureRecognizers) {     
    if ([mgestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
    {
        UIPanGestureRecognizer *mpanGR = (UIPanGestureRecognizer *) mgestureRecognizer;
        mpanGR.minimumNumberOfTouches = 1; 
        mpanGR.maximumNumberOfTouches = 1;

    }

    if ([mgestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]])
    {
        UISwipeGestureRecognizer *mswipeGR = (UISwipeGestureRecognizer *) mgestureRecognizer;
        mswipeGR.numberOfTouchesRequired = 1;
    }
Run Code Online (Sandbox Code Playgroud)

出于某种原因,maximumNumberOfTouches似乎没有用.我仍然可以用一根或两根手指滚动.如果我将两个属性都更改为2,我可以成功禁用单指滚动并需要两次触摸.

有任何想法吗?

Jak*_*ler 19

我意识到这是一个老线程,但我花了很长时间才弄明白这一点,所以我想我会分享.这是我禁用双指滚动的方法:

// set up a two-finger pan recognizer as a dummy to steal two-finger scrolls from the scroll view
// we initialize without a target or action because we don't want the two-finger pan to be handled
UIPanGestureRecognizer *twoFingerPan = [[UIPanGestureRecognizer alloc] init];
twoFingerPan.minimumNumberOfTouches = 2;
twoFingerPan.maximumNumberOfTouches = 2;
[scrollView addGestureRecognizer:twoFingerPan];
Run Code Online (Sandbox Code Playgroud)