Dav*_*mer 14 objective-c uinavigationbar ios8
在我的导航控制器中,我需要暂时禁用后退按钮.我知道可以使用以下或类似的东西隐藏它:
[self.navigationController.navigationItem setHidesBackButton:YES animated:YES];
但这不是我需要的,而是我希望后退按钮变灰并且不响应用户触摸事件.他们是否可以在不更换默认后退按钮的情况下实现此目的?
提前致谢!
Adr*_*ian 17
要禁用后退按钮,这些命令会使它按照您的要求执行:
启用:
self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.navigationBar.tintColor = [UIColor blueColor];
Run Code Online (Sandbox Code Playgroud)
禁用:
self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.navigationBar.tintColor = [UIColor lightGrayColor];
Run Code Online (Sandbox Code Playgroud)
更新:
从iOS 7开始,还有一个滑动功能,您需要在该功能上禁用UINavigationBar
.
// You wrap it an 'if' statement so it doesn't crash
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
// disable the interactivePopGestureRecognizer
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Run Code Online (Sandbox Code Playgroud)
这隐藏了后退按钮,使用户无法访问.但不能禁用它:
[self.navigationItem setHidesBackButton:YES];
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道这已经很老了,但我也遇到了这个问题.
在我的情况下,在一个场景中,我必须禁用后退按钮,在另一个场景中,我必须禁用所有导航按钮.我的解决方案是在两种情况下总共禁用导航栏:
self.navigationController.view.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
这不会将按钮显示为已禁用但会阻止触摸.
希望这会有所帮助
我相信以下内容应该有所帮助:
self.navigationController.navigationItem.backBarButtonItem.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
更新
抱歉各位,我的信念没有实现。
该属性似乎backBarButtonItem
仅用于设置后退按钮的自定义标题或图像。
来自文档:
如果要为后退按钮指定自定义图像或标题,则可以将自定义栏按钮项(带有自定义标题或图像)分配给此属性。配置栏按钮项目时,不要为其分配自定义视图;无论如何,导航项都会忽略后栏按钮中的自定义视图。
该属性的默认值为 nil。
不幸的是,我没有找到任何方法来禁用后退按钮并保存其本机外观和行为,因为任何时候当我尝试将自定义设置UIBarButtonItem
为navigationItem.backBarButtonItem
属性时 - 它都会使用适当的本机后退按钮样式进行更新,并且始终具有enabled == YES
.
我认为苹果这样做是有原因的,因为我们基本上不应该强迫用户停留在详细信息屏幕上并阻止他返回。此外,在 iOS7 及更高版本中,用户始终可以使用从左边缘滑动手势(如果不禁用它)返回。
我可以推荐的唯一一件丑陋的事情是创建一个自定义UIBarButtonItem
并将其设置为leftBarButtonItem
“返回”标题、目标和选择器,这将弹出您的视图控制器。默认情况下,它将替代原生后退按钮。然后您可以像平常一样使用 禁用它navigationItem.leftBarButtonItem.enabled = NO
。
不幸的是,它不会看起来和起作用(如果标题根据可用空间更新)作为本机后退按钮:(
归档时间: |
|
查看次数: |
12323 次 |
最近记录: |