【问题标题】:UIPanGestureRecognizer requireGestureRecognizerToFail delays UIScrollViewUIPanGestureRecognizer requireGestureRecognizerToFail 延迟 UIScrollView
【发布时间】:2013-05-01 16:36:46
【问题描述】:

我的 rootViewControllers 视图上有一个 UIPanGestureRecognizer

仅控制 2 根手指滑动(最小值和最大值设置为 2)

我的 rootViewControllers 视图上有几个 UITableView 和 UIScrollView。 但是两指滑动应该始终具有第一优先级

所以我在 UITableView 和 UIScrollView 的 panGesture 属性上放了一个 requireGestureRecognizerToFail。

这很好用,但现在当我平移 UITableView 和 UIScrollView 时,它不会移动,直到我停止滑动。

有解决办法吗?

我添加了一个示例项目来显示问题所在:https://github.com/avalanched/UIScrollViewTest

【问题讨论】:

    标签: ios objective-c uikit uipangesturerecognizer


    【解决方案1】:

    您需要通过在所有手势识别器上设置委托并实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 来允许手势识别器同时识别。

    请参阅 Apple 的 UIGestureRecognizerDelegate Documentation

    您还需要删除 requireGestureRecognizerToFail 调用,这些是导致延迟的原因。

    【讨论】:

    • *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“UIScrollView 的内置平移手势识别器必须将其滚动视图作为其委托。”
    • 我尝试过覆盖 tableview 并将委托设置为自身,将两个gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer 设置为 YES,但我仍然遇到同样的问题。
    • 滚动视图可能是导致问题的原因,您是否尝试在滚动视图平移手势识别器上将 maximumNumberOfTouches 设置为 1?
    • 我已经做到了 2,查看示例项目:github.com/avalanched/UIScrollViewTest
    • @AndyJacobs 我运行了您的测试代码,删除了对 requireGestureRecognizerToFail 的调用:修复了问题,因为您已经设置了同时识别。
    猜你喜欢
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2013-05-31
    • 2016-09-07
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多