Ios I';我们隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回赢得';不行,这是典型的吗?
我很好奇,如果我将导航栏设置为Ios I';我们隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回赢得';不行,这是典型的吗?,ios,objective-c,cocoa-touch,ios8,uinavigationbar,Ios,Objective C,Cocoa Touch,Ios8,Uinavigationbar,我很好奇,如果我将导航栏设置为隐藏,同时隐藏状态栏,我的视图控制器将不再响应屏幕边缘手势来弹出视图控制器 这是预期的行为吗?隐藏导航栏后,我试图在viewDidLoad中将interactiveepgpesturerecognizer设置为启用,但它仍然无法工作。一个非常简单的解决方法: 将滑动手势方法链接到导航后退按钮。使用选择器popThisViewController使当前视图控制器成为手势识别器(self)的目标。然后将手势识别器安装到用户将滑动的视图中。别忘了添加您的返回操作 编辑添加
隐藏
,同时隐藏状态栏,我的视图控制器将不再响应屏幕边缘手势来弹出视图控制器
这是预期的行为吗?隐藏导航栏后,我试图在
viewDidLoad
中将interactiveepgpesturerecognizer
设置为启用,但它仍然无法工作。一个非常简单的解决方法:
将滑动手势方法链接到导航后退按钮。使用选择器popThisViewController使当前视图控制器成为手势识别器(self)的目标。然后将手势识别器安装到用户将滑动的视图中。别忘了添加您的返回操作
编辑添加的滑动手势,以供其他不知道的编码器参考
更干净的代码如下所示:
UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(goBack:)];
gesture.numberOfTouchesRequired = 1;
gesture.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRight];
}
-(IBAction)goBack:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
你确定你做得对吗?我总结了一个似乎对我有用的例子。我所做的只是使
navigationController.navigationBar.hidden=YES
和[[UIApplication sharedApplication]setStatusBarHidden:YES]
-编辑-
仔细检查后,看起来UINavigationController上有两个不同的属性。有
navigationBar
是UINavigationBar视图,还有navigationBarHidden
是布尔值。将navigationBarHidden
设置为true时,滑动手势将停止工作。但是如果您使用navigationBar.hidden
将实际视图设置为隐藏,则该手势仍然有效。查看Git存储库中的示例。是的,这是完全正常的行为。@soulshined那么我该如何应对呢?请查看我的答案以供审阅。只需将该手势添加到viewDidLoad中,即可完成所有设置!我的回答回答了你的问题吗?这与iOS 7的流行手势大不相同。一个是从屏幕边缘开始的,另一个是交互的。这与iOS 7的弹出手势非常不同,可以通过另一种方式隐藏导航栏来轻松解决。我正在使用UIViewController
上的preferStatusBarHidden
方法隐藏状态栏。
[self.navigationController.navigationBar setHidden:YES];<--doesn't remove pop gesture
[self.navigationController setNavigationBarHidden:YES];<-- disables pop gesture
[self.navigationController.navigationBar setHidden:NO];