我的视图控制器中有几个UIScrollViews.我想覆盖一个视图,通过UIPanGestureRecognizer捕获2手指滑动,这不会记录UIScrollView滑动手势.
当我用2手指平移手势对我的内容进行透明的视图时,我的水龙头和1个手指滑动不被检测到.我试图覆盖pointInside:方法返回NO
但是它不记录我的2手指滑动.
效果类似于4手指滑动来更改应用程序.
解决方法
您不需要重叠视图.
首先实现UIPanGestureRecognizer,它将处理2个手指盘并将其分配给包含UIScrollViews的视图
首先实现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];
使用UIGestureRecognizerDelegate处理2手指平移与UIScrollView平移手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; }
最后你可以处理2个手指锅
- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer { NSLog(@"pan"); }
如果要在检测到两个手指盘时停止滚动UIScrollView,可以禁用并启用UIScrollView平移识别器
- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer { if(gestureRecognizer.state == UIGestureRecognizerStateBegan) { _scrollView.panGestureRecognizer.enabled = NO; } if(gestureRecognizer.state == UIGestureRecognizerStateEnded) { _scrollView.panGestureRecognizer.enabled = YES; } NSLog(@"pan"); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。