我已经尝试使用 PageViewerViewController
以通过 scrollMode
中的几个页面。就像 SO
中的另一个问题一样(我似乎觉得这很难)我想捕捉触摸。所以在 viewDidLoad
上我搜索了该 Controller 中的 Views
并找到了 scrollView
并添加了一个 TapGestureRecognizer
并且它效果不是很好,所以我将 self
添加为它的 delegate
并告诉他与其他 GestureRecognizers
同时工作,但效果很好。问题是,当我尝试点击其中一个页面上的 UIButton
时,它无法识别点击。当我同时关闭工作时,它突然工作正常。
我做错了什么?
更多信息:我想我在网上搜索了以下问题,并尝试从头开始编写代码,尝试更改代码,并添加另一个 TapGestureRecognizer
所以远有最好的结果。
我目前没有任何想法。任何建议表示赞赏。谢谢。
为了进一步说明,我试图在 ScrollMode 中捕获 UIPageViewerViewController
上的所有 touchStarted、touchMoved、touchEnded。我尝试将另一个 UITapGestureRecognizer
添加到内部 UIScrollView
,添加到 UIScrollView
的 super View ,添加到其中的 self.view
添加了 UIPageViewerViewController
。当我同时删除工作时,我的 UITapGestureRecognizer 停止随机工作。当我将工作同时设置为工作时,在启动另一个 UIViewController 之前,我无法单击任何 UIButton
。然后出于某种原因,它确实起作用了。
编辑 我只用了 3 个页面,UIScrollView
更好吗?
我将所有内容更改为 UIScrollView,当我删除 UITapGesureRecognizer 时,一切正常,我收到触摸,一切运行顺利。
除了在 UIScrollView 中添加 UITapGestureRecognizer 之外,还有其他方法来捕获触摸吗?
最佳答案
您的按钮无法识别点击,因为 tapGestureRecognizer 会拦截它们。您可以设置更复杂的区域,其中 tapGestureRecognizer 具有主要优先级。尝试添加此代码:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if (gestureRecognizer == yourTapGestureRecognizer) {
return !CGRectContainsPoint(yourButton.frame, [gestureRecognizer locationInView:yourScrollView]);
}
return YES;
}
关于ios - 捕获 UIScrollView 上的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801375/