【问题标题】:Limit UITableView panning to 1 finger将 UITableView 平移限制为 1 根手指
【发布时间】:2023-03-20 16:54:01
【问题描述】:

我有一个场景,我有两个 UITableViews 作为主 UIView 中的子视图:

UIView(帧 = 全屏)
+--- UITableView (frame = ~1/3 of the screen)
+--- UITableView (frame = second ~1/3 of the screen)

我想检测三个手指在整个屏幕区域上向上滑动(并且还允许用户用至少一根手指向上和向下平移 UITableView)。

我有一个使用numberOfTouchesRequired = 3 附加到 UIView 的 UISwipeGestureRecognizer。

我试过这些:

  • 在两个 UITableView 上将两个内部 UIPanGestureRecognizers maximumNumberOfTouches 设置为 1。据我了解,这应该可以防止 UITableViews 上的两个和三个手指平移,但事实并非如此。 (如果我在这些 UIPanGestureRecognizer 上将 enabled 设置为 NO,则触摸会正确传递给超级视图。但是平移/滚动不起作用。)
  • 在两个 UITableView 上用我的 UISwipeGestureRecognizer 调用 panGestureRecognizer requireGestureRecognizerToFail:。这部分工作,但平移等到滑动尚未完成,感觉很笨拙。
  • 使用设置shouldRecognizeSimultaneouslyWithGestureRecognizer: 覆盖UITableView 以返回YES,这使我能够检测到三指滑动。但是,无意中平移/滚动下方的 UITableViews。

那么如何将平移触摸的次数限制为 1(或 2)并让三指 UISwipeGestureRecognizer 识别三指滑动?

【问题讨论】:

    标签: ios objective-c uitableview uigesturerecognizer


    【解决方案1】:

    尝试覆盖顶部(整个屏幕)上的canPreventGestureRecognizer:UIPanGestureRecognizer,为两个表格视图手势识别器中的每一个返回NO

    我还尝试在两个表格视图手势识别器中的每一个上覆盖 canBePreventedByGestureRecognizer:,以在最上面的 UIPanGestureRecognizer 的情况下返回 NO

    很久以前我遇到过和你类似的情况,不记得我是如何修复它的(该项目早已不复存在),但我似乎记得使用上述方法并最终得到它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2012-08-16
      • 2014-04-22
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多