ios - UIBarButtonItem 在 View 更改之前不会被禁用

标签 ios uibarbuttonitem uitoolbar

我有一个 UINavigationController 并在我的一个 View Controller 中使用工具栏。我有几个 UIBarButtonItems。在不同的时间点,我禁用了工具栏中的某些按钮,使用诸如 _btnEdit.enabled = NO 之类的东西。

这一切都很好,除了有一次在没有用户交互时发生这种情况。在这种情况下,该按钮似乎已启用(未变灰),但不接受触摸。如果我用东西(底部的操作表)覆盖栏或更改设备的方向,它会正确显示。

我试过 self.navigationController.toolbar setNeedsDisplay][self.navigationController.toolbar drawRect:self.navigationController.toolbar.bounds] 但都没有效果。

关于如何“刷新”这个 View 有什么想法吗?我知道 UIBarButtonItems 不是从 UIView 继承的,我觉得这可能是导致问题的原因。

最佳答案

这是预期的行为。 setNeedsDisplay 是一个很好的反射尝试,但是您不拥有导航栏并且 UIBarButtonItem 不继承自 UIView,因此我们需要稍微不同地考虑它们。
在这里你可以如何实现你的目标:

UIBarButtonItem *bbi = self.navigationItem.rightBarButtonItem;
bbi.enabled = NO;
[self.navigationItem setRightBarButtonItem:bbi animated:YES];

注意:self 是一个 UIViewController
我刚刚对此进行了快速测试,它正在运行。

关于ios - UIBarButtonItem 在 View 更改之前不会被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773143/

相关文章:

ios - 快速键盘听不到输入声音

ios - 如何为 UIBarButtonItem 设置 Action ?

ios - 如何制作带有步骤、箭头样式的 UIToolbar

objective-c - 使用 UIToolBar 上的完成按钮关闭 UIPickerView

iphone - 我可以向 UIToolbar 添加彩色按钮吗?

iphone - popToRoot时如何传递值

ios - 错误 - 线程 1 exc_bad_instruction(代码=exc_1386_invop 子代码=0x0)

ios - 类内的默认值

ios - 无法更改 UIBarButtonItem 的背景

ios - 导航栏中的 UIBarButtonItem 以编程方式?