我有一个简单的UITableViewController
,其中NavigationController
作为根视图控制器。我添加了一个"选项" UIBarButtonItem
到导航栏和"开始" UIBarButtonItem
到工具栏,如下所示:
。我遇到的问题是"选项"按下按钮会在按下时突出显示,就像普通的UIButton
一样,但是"开始"工具栏上的按钮没有。这非常不方便,因为它使用户很难知道他们是否真的按下了按钮。此行为如下所示:
选项按钮未按下
选项按钮按下
开始按钮未按下
开始按钮按下
我无法弄清楚如何解决此问题。我确实验证了"开始"按钮实际上有效,因此突出显示问题不是因为按钮不起作用。另外,有趣的是,"开始"长按按钮 会突出显示。
答案 0 :(得分:3)
您只是在Interface Builder的Attributes Inspector中错误配置了UIbarButtonItem / UIButton。
没有必要浪费时间来调查这样一个微不足道的问题,无论它看起来多么令人费解。只需删除“开始”按钮,然后再将新的按钮拖放到工具栏中。 它没有理由与上面的选项按钮表现不同。
答案 1 :(得分:1)
您应该将按钮类型从UIButtonTypeCustom
更改为UIButtonTypeSystem
。
答案 2 :(得分:0)
确保您的按钮在IB中以.Default状态初始化。
然后确保.Highlighted状态文本颜色与.Default状态文本颜色不同。
启用:显示Touch On Highlight以进行测试。
答案 3 :(得分:0)
没有内置方式,但我可以想到一些自定义方法:
将按钮绑定到切换按钮的目标方法 意味着切换,然后更改按钮的图像属性 因此。您可以将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
答案 4 :(得分:0)
工具栏是否设置为半透明?我怀疑你的导航栏是和工具栏没有。