UIScrollView and cancel a zooming pinch gesture

前端 未结 3 478
难免孤独
难免孤独 2021-01-07 06:14

How do you forcibly cancel a zooming open pinch gesture on a UIScrollView, say when the user has zoomed \"sufficiently\" far to trigger a new action?

3条回答
  •  遥遥无期
    2021-01-07 07:00

    To prevent user-controller zooming and panning but still allow programmatic zooming and panning of a scrollview, the best approach is to override the UIScrollView's -addGestureRecognizer: method in a subclass.

    -(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
    {
        //Prevent any of the default panning and zooming controls from working
        gestureRecognizer.enabled = NO;
        [super addGestureRecognizer:gestureRecognizer];
        return;
    }
    

    Each gesture recognizer is simply disabled, for finer control (for ex. allowing the pan control but only allow zooming via a double tap for instance) you'd simply check the incoming gesture recognizer via -isKindOfClass: and disabling as appropriate.

    -(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    {
        //Prevent zooming but not panning
        if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) 
        {
            gestureRecognizer.enabled = NO;
        }
        [super addGestureRecognizer:gestureRecognizer];
        return;
    }
    

    Hope this helps.

提交回复
热议问题