【发布时间】:2014-08-06 15:08:07
【问题描述】:
我正在使用UISplitViewController,其中一个详细视图控制器包含一个添加了UIPanGestureRecognizer 的视图。当我在详细视图控制器中滑动此视图时,手势被识别,但拆分视图控制器的滑动手势识别器干扰它;主视图控制器被显示,而来自细节控制器的手势识别器被忽略。
从UIGestureRecognizerDelegate 实现和调试shouldRecognizeSimultaneouslyWithGestureRecognizer 方法会显示两个UIPanGestureRecognizer 对象:一个来自详细视图控制器,一个来自拆分视图控制器,所以我确定它们相互干扰。
当我在拆分视图控制器上设置presentsWithGesture = NO 时,详细视图控制器内的手势识别器确实可以工作。但这会禁用拆分视图控制器上的手势识别器,因此它并不是真正解决问题的方法。
我也尝试在拆分视图控制器上禁用手势识别器,仅当我需要其他手势识别器工作时,但似乎一旦拆分视图控制器变得可见就无法设置presentsWithGesture .
我还尝试禁用拆分视图控制器上的默认手势并添加我可以控制的自定义手势,但它不起作用。我尝试在手势上使用拆分视图控制器栏按钮中的target 和action,但它不起作用。在拆分视图控制器上调用 toggleMasterVisible: 也不是一种选择,因为它是私有 api 的一部分。
有人对如何处理这个问题有任何建议吗?
【问题讨论】:
-
你能在SplitViewControllers上调用
requireGestureRecognizerToFail:UIPanGestureRecognizer吗? -
或者当第一个参数是您的
UIPanGestureRecognizer时,从您的代表gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:方法返回YES 以使其优先? -
在拆分视图控制器的
UIPanGestureRecognizer上调用requireGestureRecognizerToFail成功了,谢谢!您可以将其发布为答案以便我接受吗? -
我可以,尽管您已经接受了另一个答案?出于兴趣,您是如何获得拆分视图控制器的
UIPanGestureRecognizer的? -
在详细视图的
viewWillAppear中,我使用self.splitViewController.view.gestureRecognizers[0]来获取它。
标签: ios objective-c