[英]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.