【发布时间】: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