我已经隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回不起作用,这是典型的吗?
Posted
技术标签:
【中文标题】我已经隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回不起作用,这是典型的吗?【英文标题】:I've hidden the navigation bar and the status bar, now the screen edge pan gesture to go back won't work, is this typical? 【发布时间】:2014-12-05 07:03:18 【问题描述】:我很好奇,如果我将navigationBar 设置为hidden
,同时隐藏状态栏,我的视图控制器将不再响应屏幕边缘手势来弹出视图控制器。
这是预期的行为吗?隐藏导航栏后,我尝试在viewDidLoad
中将interactivePopGestureRecognizer
设置为启用,但它仍然不起作用。
【问题讨论】:
是的,这是完全正常的行为。 @soulshined 那么我该如何应对呢? 查看我的答案以供审核。只需将手势添加到您的 viewDidLoad 即可!快乐编码 我的回答回答了你的问题吗 【参考方案1】:[self.navigationController.navigationBar setHidden:YES];<--doesn't remove pop gesture
[self.navigationController setNavigationBarHidden:YES];<-- disables pop gesture
只需使用第一个选项,然后在根控制器的 viewDidAppear 方法中使用:
[self.navigationController.navigationBar setHidden:NO];
【讨论】:
【参考方案2】:你确定你做对了吗?我整理了一个似乎对我有用的例子。我所做的只是制作navigationController.navigationBar.hidden = YES
和[[UIApplication sharedApplication] setStatusBarHidden:YES]
-编辑-
经过仔细检查,UINavigationController 上似乎有两个不同的属性。 navigationBar
是 UINavigationBar 视图,navigationBarHidden
是布尔值。当您将 navigationBarHidden
设置为 true 时,滑动手势将停止工作。但是,如果您使用navigationBar.hidden
将实际视图设置为隐藏,则该手势仍然有效。查看 Git 存储库以获取示例。
【讨论】:
我在UIViewController
上使用preferStatusBarHidden
方法隐藏状态栏。【参考方案3】:
一个非常简单的解决方法:
将滑动手势方法链接到导航返回按钮。使用选择器 popThisViewController 使当前视图控制器成为手势识别器(自身)的目标。然后将手势识别器安装到用户将滑动的视图中。不要忘记添加您的返回操作
编辑添加了滑动手势以供其他不知道的编码人员参考
更简洁的代码如下所示:
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];
【讨论】:
这与ios 7的pop手势有很大不同。一方面,它只从屏幕的边缘开始,另一方面,它是交互式的。 这与 iOS 7 的弹出手势有很大不同,可以通过其他方式隐藏导航栏轻松解决以上是关于我已经隐藏了导航栏和状态栏,现在屏幕边缘平移手势返回不起作用,这是典型的吗?的主要内容,如果未能解决你的问题,请参考以下文章