繁体   English   中英

UISplitViewController滑动手势干扰其他滑动手势

[英]UISplitViewController swipe gesture interferes with other swipe gesture

我正在使用UISplitViewController ,其中一个详细视图控制器包含一个添加了UIPanGestureRecognizer的视图。 当我在细节视图控制器中滑动该视图时,识别手势,但是分割视图控制器的滑动手势识别器会干扰它; 显示主视图控制器,忽略细节控制器中的手势识别器。

UIGestureRecognizerDelegate实现和调试shouldRecognizeSimultaneouslyWithGestureRecognizer方法显示了两个UIPanGestureRecognizer对象:一个来自详细视图控制器,一个来自拆分视图控制器,所以我确定它们互相干扰。

当我在拆分视图控制器上设置presentsWithGesture = NO时,详细视图控制器内的手势识别器可以正常工作。 但是这会禁用分割视图控制器上的手势识别器,因此它并不是解决问题的方法。

我也尝试在分割视图控制器上禁用手势识别器,只有当我需要其他手势识别器才能工作时,但是一旦分割视图控制器变得可见,似乎无法设置presentsWithGesture

我还尝试在分割视图控制器上禁用默认手势并添加我可以控制的自定义手势,但它不起作用。 我尝试在手势上使用分割视图控制器按钮上的targetaction ,但它不起作用。 调用toggleMasterVisible:在拆分视图控制器上也不是一个选项,因为它是私有api的一部分。

有没有人对如何处理这个有任何建议?

我建议您在需要另一个工作时禁用UISplitViewController平移手势。 这应该这样做:

for (UIGestureRecognizer* recognizer in [splitViewController gestureRecognizers]) {
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        [recognizer setEnabled:NO];
    }
}

您可能不希望每次都搜索它,因此我会在视图加载时存储对该手势识别器的引用,然后根据需要禁用和启用:

在viewDidLoad上:

for (UIGestureRecognizer* recognizer in [splitViewController gestureRecognizers]) {
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        [self setSplitViewPanGesture:recognizer];
    }
}

后来:

[self.splitViewPanGesture setEnabled:NO];

然后:

[self.splitViewPanGesture setEnabled:YES];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM