我有一个 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/