userInteractionEnabled 在 iOS 7 中不起作用

Posted

技术标签:

【中文标题】userInteractionEnabled 在 iOS 7 中不起作用【英文标题】:userInteractionEnabled is not working in iOS 7 【发布时间】:2013-09-30 07:22:26 【问题描述】:

self.navigationController.navigationBar.userInteractionEnabled = NO;

不适用于viewDidLoad:viewWillAppear: 方法。即我仍然可以使用导航栏上的按钮。 ios 6 一切正常。

如何在 iOS 7 中禁用 UINavigationBar 上的用户交互?

更新:

我注意到一件奇怪的事情,self.navigationController.navigationBar.userInteractionEnabled = NO 似乎与 RootviewController 的 viewDidLoadviewWillAppear 一起工作正常,但与导航堆栈中的其他控制器不兼容。

【问题讨论】:

self.navigationController.navigationBar.userInteractionEnabled = NO;在 viewDidLoad 中正常工作: 【参考方案1】:

Xcode 5(5A1314)iOS 7 一起使用,这行代码可以很好地启用和禁用用户与导航栏的交互。

self.navigationController.navigationBar.userInteractionEnabled = YES;
// No for Disable and YES for enable.

或者你可以尝试另一种方式,比如

[self.navigationController.navigationBar setUserInteractionEnabled:NO];
// No for Disable and YES for enable.

您可以尝试清空缓存并清除所有目标,例如 CleanRun。你可以重置模拟器。

【讨论】:

但是在我这边工作正常可能还有其他问题。可以为您的项目获取可下载链接,以便我为您提供帮助。 在 navigationController 的 RootViewController 上工作正常。尝试在导航中使用其他控制器。【参考方案2】:

您可以尝试不同的方法并直接禁用按钮

[self.navigationItem.rightBarButtonItem setEnabled:NO];
[self.navigationItem.leftBarButtonItem setEnabled:NO];

【讨论】:

您能否验证您是否可以访问 UINavigationController? NSLog(@"%@",self.navigationController) 是的。我确实可以访问 navigationController 和 navigationBar。奇怪的是,在 navigationController 的 RootViewController 中似乎一切正常。 怎么样 NSLog(@"self.navigationItem.rightBarButtonItem"); ?

以上是关于userInteractionEnabled 在 iOS 7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

试图操纵 UISlider 的 userInteractionEnabled 属性:不工作

SKSpriteNode UserInteractionEnabled 不工作

UIView之userInteractionEnabled属性介绍

userInteractionEnabled = YES时如何将触摸事件传递给superview?

iOS bug 日志-userInteractionEnabled

斯威夫特:userInteractionEnabled 用于纺车概念中的子视图