更新:问题似乎是对另一个 GestureRecognizer 的依赖失败。请参阅此问题下面的评论和测试项目!
在我的 iPhone 应用程序中,我有一个包含多个 UIButtons 作为子视图的视图。该视图还有一个 UITapGestureRecognizer,它正在监听两根手指的点击。
当在视图上发生两指点击时,我不希望按钮对点击做出反应,即使其中一根手指位于按钮内。我认为这就是“cancelsTouchesInView”的用途,但这不起作用。
我现在的问题是:当识别手势时,如何告诉我的按钮忽略点击?
编辑:这是我的手势识别器。
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapped:)];
[doubleTap setNumberOfTouchesRequired:2];
[doubleTap setNumberOfTapsRequired:1];
[doubleTap setCancelsTouchesInView:YES];
[doubleTap setDelaysTouchesBegan:YES];
[doubleTap setDelaysTouchesEnded:YES];
[self.view addGestureRecognizer:doubleTap];
[doubleTap release];
据苹果开发人员称,这是一个错误。我向 Apple 提交了错误报告。
非常感谢您的提示,Deepak 和 gcamp!
错误报告:
概括:
将两个 UITapGestureRecognizer 添加到视图时,其中一个要求另一个失败 (requiresGestureRecognizerToFail:),第一个手势识别器的 cancelsTouchesInView 属性将被忽略。
重现步骤:
1.创建两个UITapGestureRecognizer(r1和r2)
2. 将 r1 配置为需要两次触摸和一次点击,并延迟触摸开始
3. 将 r2 配置为需要两次触摸和两次点击,并延迟 TouchBegan
4.配置r1要求r2失败[r1 requestsGestureRecognizerToFail:r2]
5. 将r1和r2添加到视图中
6. 在视图中放置一个UIButton
7. 用两根手指点击视图,其中一根手指应该按下按钮。
预期成绩:
r1 应该被识别并且按钮点击应该被取消(对于 UITapGestureRecognizers,cancelsTouchesInView 默认为 YES)。
实际结果:
r1 被识别,但按钮 TouchUpInside 事件也被触发。
回归:一旦删除了对 r2 的依赖(步骤 4),cancelsTouchesInView 就可以很好地用于 r1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)