选择时导航栏中的 UIBarButtonItem 会突出显示,但工具栏中的 UIBarButtonItem 不会
UIBarButtonItem in navigation bar is highlighted when selected but UIBarButtonItem in toolbar is not
我有一个简单的 UITableViewController
,其中 NavigationController
作为根视图控制器。我在导航栏中添加了“选项”UIBarButtonItem
,在工具栏中添加了“开始”UIBarButtonItem
,如下所示:
。我遇到的问题是按下“选项”按钮时会突出显示,就像常规 UIButton
一样,但工具栏上的“开始”按钮不会。这非常不方便,因为这让用户很难知道他们是否真的按下了按钮。此行为如下所示:
选项按钮未按下:
选项按钮按下:
启动按钮未按下:
启动按钮按下:
我不知道如何解决这个问题。我确实验证了“开始”按钮确实有效,所以突出显示问题不是因为按钮不起作用。此外,有趣的是,“开始”按钮 在长按时 会突出显示。
确保您的按钮已初始化为 IB 中的默认状态。
然后确保.Highlighted 状态的Text Color 与.Default 状态的Text Color 不同。
启用:在测试时显示触摸突出显示。
没有内置方法,但我可以想到一些自定义方法:
将按钮绑定到一个目标方法,该方法可以切换任何按钮
用于切换,然后更改按钮的图像 属性
因此。您可以使用 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
您只是错误地配置了 Interface Builder 的属性检查器中的 UIbarButtonItem/UIButton。
没有必要浪费时间研究这样一个微不足道的问题,无论它看起来多么令人费解。只需删除该“开始”按钮并再次将一个新按钮放入工具栏即可。
没有理由让它的行为与上面的选项按钮不同。
工具栏是否设置为半透明?我怀疑你的导航栏是,工具栏不是。
您应该将按钮类型从 UIButtonTypeCustom
更改为 UIButtonTypeSystem
。
我有一个简单的 UITableViewController
,其中 NavigationController
作为根视图控制器。我在导航栏中添加了“选项”UIBarButtonItem
,在工具栏中添加了“开始”UIBarButtonItem
,如下所示:
。我遇到的问题是按下“选项”按钮时会突出显示,就像常规 UIButton
一样,但工具栏上的“开始”按钮不会。这非常不方便,因为这让用户很难知道他们是否真的按下了按钮。此行为如下所示:
选项按钮未按下:
选项按钮按下:
启动按钮未按下:
启动按钮按下:
我不知道如何解决这个问题。我确实验证了“开始”按钮确实有效,所以突出显示问题不是因为按钮不起作用。此外,有趣的是,“开始”按钮 在长按时 会突出显示。
确保您的按钮已初始化为 IB 中的默认状态。
然后确保.Highlighted 状态的Text Color 与.Default 状态的Text Color 不同。
启用:在测试时显示触摸突出显示。
没有内置方法,但我可以想到一些自定义方法:
将按钮绑定到一个目标方法,该方法可以切换任何按钮 用于切换,然后更改按钮的图像 属性 因此。您可以使用 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
您只是错误地配置了 Interface Builder 的属性检查器中的 UIbarButtonItem/UIButton。
没有必要浪费时间研究这样一个微不足道的问题,无论它看起来多么令人费解。只需删除该“开始”按钮并再次将一个新按钮放入工具栏即可。 没有理由让它的行为与上面的选项按钮不同。
工具栏是否设置为半透明?我怀疑你的导航栏是,工具栏不是。
您应该将按钮类型从 UIButtonTypeCustom
更改为 UIButtonTypeSystem
。