如何在从左到右滑动时禁用 ViewController 关闭?

Posted

技术标签:

【中文标题】如何在从左到右滑动时禁用 ViewController 关闭?【英文标题】:How do I disable ViewController dismissal on left-to-right swipe? 【发布时间】:2013-11-27 04:22:54 【问题描述】:

有谁知道如何防止视图控制器因从屏幕的最左侧从左向右滑动而被解除(或从 NavigationController 堆栈中弹出)?

我上传了一个视频来帮助解释我的意思。此行为发生在模拟器和物理设备中。

http://youtu.be/fyNEDT140TQ

原因:有人将在屏幕上签名,因此,从屏幕左侧开始将导致导航控制器弹出当前视图控制器(即返回屏幕)。

【问题讨论】:

【参考方案1】:

您需要使用以下代码。 ios 6 不支持,所以你要先检查一下

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)] && [self checkOSVersion] >= 7) 
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;


- (int)checkOSVersion 

    NSArray *ver = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."];
    int osVerson = [[ver objectAtIndex:0] intValue];
    return osVerson;

【讨论】:

【参考方案2】:

手势由 UINavigationController.interactivePopGestureRecognizer 工作。您可以通过将 interactivePopGestureRecognizer.enable 设置为 NO 来禁用此行为

【讨论】:

【参考方案3】:

Swift 3+

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

如果你不知道视图是否有导航控制器,你会想要打开它。

if self.navigationController?.interactivePopGestureRecognizer?.isEnabled != nil 
    self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
     

【讨论】:

以上是关于如何在从左到右滑动时禁用 ViewController 关闭?的主要内容,如果未能解决你的问题,请参考以下文章

Android 从左到右滑动动画

滑动删除不适用于从左到右滑动

我的应用程序使用片段,但我需要从左到右从右向左滑动

text 从左到右滑动菜单

如何将 viewPager 的方向反转为从左到右的顺序?

jquery滑动侧边栏从左到右