是否有人知道如何防止视图控制器因屏幕最左侧从左向右滑动而被解散(或从NavigationController堆栈中弹出)?
我上传了一段视频来帮助解释我的意思。在模拟器和物理设备中都会出现此问题。
原因:有人会在屏幕上签名,因此,从屏幕左侧开始将导致导航控制器弹出当前视图控制器(即返回屏幕)。
答案 0 :(得分:9)
您需要使用以下代码。 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;
}
答案 1 :(得分:1)
手势正在由UINavigationController.interactivePopGestureRecognizer工作。您可以通过将interactivePopGestureRecognizer.enable设置为NO
来禁用此行为答案 2 :(得分:0)
Swift 3 +
touches.filter {
it.action == MotionEvent.ACTION_DOWN
or it.action == MotionEvent.ACTION_UP
}
.map { it.action == MotionEvent.ACTION_DOWN }
.distinctUntilChanged() // Avoid repeating events
.switchMap { state ->
if (state) {
Observable.interval(...)
} else {
Observable.never()
}
}
如果你不知道视图是否有导航控制器,你会想要打开它。
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false