仅捕获UIView 2手指UIPanGestureRecognizer

And*_*obs 9 objective-c ipad uigesturerecognizer ios uipangesturerecognizer

UIScrollView我的视图控制器中有几个s.我想覆盖一个捕获2个手指滑动的视图,通过UIPanGestureRecognizer该视图不会记录UIScrollView滑动手势.

当我使用双指平移手势在我的内容上放置透明视图时,我的水龙头和1个手指滑动未被检测到.我尝试覆盖pointInside:方法返回NO 但是它没有记录我的2指滑动.

效果类似于4指滑动来更改应用程序.

Ser*_*nov 10

您不需要叠加视图.
第一个实现UIPanGestureRecognizer将处理2个手指平移并将其分配给包含UIScrollViews的视图

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]
                                                initWithTarget:self 
                                                        action:@selector(handlePan:)];
panGestureRecognizer.delegate = self;
panGestureRecognizer.minimumNumberOfTouches = 2;
panGestureRecognizer.maximumNumberOfTouches = 2;
[self.view addGestureRecognizer:panGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

使用UIGestureRecognizerDelegate处理2指平移与UIScrollView平移手势

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

最后你可以处理2个手指

- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer
{
    NSLog(@"pan");
}
Run Code Online (Sandbox Code Playgroud)

如果要在UIScrollView检测到两个手指平移时停止滚动,则可以禁用并启用UIScrollView平移识别器

- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer
{
    if(gestureRecognizer.state == UIGestureRecognizerStateBegan)
    {
        _scrollView.panGestureRecognizer.enabled = NO;
    }
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
    {
        _scrollView.panGestureRecognizer.enabled = YES;
    }
    NSLog(@"pan");
}
Run Code Online (Sandbox Code Playgroud)