繁体   English   中英

选中时导航栏中的UIBarButtonItem突出显示,但工具栏中的UIBarButtonItem未选中

[英]UIBarButtonItem in navigation bar is highlighted when selected but UIBarButtonItem in toolbar is not

我有一个简单的UITableViewController ,将NavigationController作为根视图控制器。 我在导航栏上添加了“选项” UIBarButtonItem ,在工具栏上添加了“开始” UIBarButtonItem ,如下所示:

在此处输入图片说明

我遇到的问题是,当按下“选项”按钮时,它会像常规的UIButton一样突出显示,但是工具栏上的“开始”按钮却没有。 这非常不方便,因为这使用户很难知道他们是否真正按下了按钮。 此行为如下所示:

未按下选项按钮

在此处输入图片说明

按下选项按钮

在此处输入图片说明

未按下开始按钮

在此处输入图片说明

按下开始按钮

在此处输入图片说明

我不知道如何解决此问题。 我确实确认“开始”按钮确实有效,因此突出显示问题不是因为该按钮不起作用。 同样,很有趣的是,长按“开始”按钮时,它确实会突出显示。

您只需在Interface Builder的Attributes Inspector中错误地配置了UIbarButtonItem / UIButton。

无论看起来多么令人困惑,都没有必要浪费时间去研究这样一个琐碎的问题。 只需删除该“开始”按钮,然后将一个新按钮再次放入工具栏即可。 没有理由让它的行为与上面的选项按钮有所不同。

您应该将按钮类型从UIButtonTypeCustom更改为UIButtonTypeSystem

确保按钮在IB中以.Default状态初始化。

然后,确保.Highlighted状态的文本颜色与.Default状态的文本颜色不同。

启用:显示触摸高亮显示以进行测试。

没有内置的方法,但是我可以想到一些自定义方法:

  • 将按钮绑定到目标方法,该方法将切换按钮打算切换的内容,然后相应地更改按钮的image属性。 您可以使用2张图像,一张用于所选状态,一张用于默认状态。

  • 创建您自己的UIBarButtonItem子类,如下所示:

      @interface CustomBarButtonItem : UIBarButtonItem { BOOL _state; UIImage * selectedImage; UIImage * defaultImage; } - (BOOL)toggleState; @property (nonatomic, retain) UIImage * selectedImage; @property (nonatomic, retain) UIImage * defaultImage; @end @implementation CustomBarButtonItem - (BOOL)toggleState { if (_state) { // Switch to Off state self.image = defaultImage; } else { // Switch to On state self.image = selectedImage; } return _state = !_state; } @end 

工具栏设置为半透明吗? 我怀疑您的导航栏是,工具栏不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM