将UITableView平移限制为1个手指

时间:2013-12-09 17:59:32

标签: ios objective-c uitableview uigesturerecognizer

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

UIView(帧=全屏)
+ --- UITableView(帧=屏幕的〜1/3)
+ --- UITableView(帧=屏幕的第二~1 / 3)

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

我有一个UISwipeGestureRecognizer附加到UIView numberOfTouchesRequired = 3

我试过这些:

  • 在两个UITableViews上将内部UIPanGestureRecognizers maximumNumberOfTouches设置为1。根据我的理解,这应该可以防止UITableViews上有两个和三个手指平底锅,但事实并非如此。 (如果我在这些UIPanGestureRecognizers上将enabled设置为NO,则触摸会正确传递给superview。但是平移/滚动不起作用。)
  • 在两个UITableView上使用panGestureRecognizer requireGestureRecognizerToFail:调用UISwipeGestureRecognizer。这部分工作,但平移等待直到刷卡没有完成,感觉非常笨拙。
  • 通过设置shouldRecognizeSimultaneouslyWithGestureRecognizer:覆盖UITableView以返回YES,这允许我检测三指滑动。但是,UITableViews无意中向下/向上滚动。

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

1 个答案:

答案 0 :(得分:0)

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

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

我很久以前就遇到过与你类似的情况,并且不记得我是如何解决它的(项目早已不复存在),但我似乎记得玩弄上述方法和最终让它发挥作用。