ios - 捕获 UIScrollView 上的触摸

标签 ios objective-c uiscrollview touch

我已经尝试使用 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/

相关文章:

ios - 内存警告无法正常工作

iphone - 设置包中的更新版本失败 iphone

objective-c - 在 objc ARC 下使用 -Os 过度释放,但不使用 -O0

ios - 从 UIScrollview 应用程序中的文档目录加载 50 多个图像崩溃

c# - 延迟加载和多线程

cocoa-touch - 预测减速后 UIScrollView 中的静止偏移量

iphone - 在 map View 上拖动注释图钉

ios - SwiftyJson 是否能够将自定义 swift 类转换为 json 字符串?

ios - UIPercentDrivenInteractiveTransition 无法通过快速手势完成动画

iphone - 从一个 View Controller 调用另一个 View Controller 的方法