我有这样一种情况,在一个主要的UIView中有两个UITableView作为子视图:
UIView(框架=全屏幕)
+--- UITableView(框架=屏幕的约1/3)
+--- UITableView(框架=第二个屏幕的约1/3)
我想检测在整个屏幕区域上进行三指向上滑动事件(并且也允许用户用至少一根手指来移动UITableViews)。
我已经给UIView附加了一个UISwipeGestureRecognizer,并设置numberOfTouchesRequired = 3
。
我尝试了以下方法:
- 在两个UITableViews上都将内部UIPanGestureRecognizers的
maximumNumberOfTouches
设置为1。据我理解,这应该防止在UITableViews上进行双手和三手指移动,但它没有生效。(如果我在这些UIPanGestureRecognizers上设置enabled
为NO,则触摸正确传递到父视图。但此时无法进行拖动/滚动。) - 在两个UITableViews上使用
panGestureRecognizer requireGestureRecognizerToFail:
调用我的UISwipeGestureRecognizer
。这部分可以工作,但是移动操作要等到滑动完成后才能正常进行,感觉非常笨拙。 - 重写UITableView并设置
shouldRecognizeSimultaneouslyWithGestureRecognizer:
返回YES,这使我可以检测到三根手指向上滑动的操作。但是,下面的UITableViews会意外地移动/滚动。
那么,如何限制拖动触摸数量为1(或2),同时让三指UISwipeGestureRecognizer识别出三指向上滑动事件呢?