3

我有一个 UINavigationController 并在我的一个视图控制器中使用工具栏。我有几个 UIBarButtonItems。在不同的点上,我禁用工具栏中的某些按钮,使用类似_btnEdit.enabled = NO.

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

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

关于如何“刷新”这个观点的任何想法?我知道 UIBarButtonItems 不是从 UIView 继承的,我觉得这可能导致了这个问题。

4

1 回答 1

3

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

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

注意: 我刚刚对此进行了快速测试并且它正在工作selfUIViewController

于 2012-12-08T03:27:42.963 回答