我有一个按钮,我想使用突出显示的属性突出显示。在界面生成器中,突出显示的属性起作用并将按钮更改为明显突出显示的状态。但是,在代码中,当我写 [myButton setHighlighted:YES]; 没有什么变化。关于为什么这不起作用的任何想法?
5 回答
请记住,正确的行为是下一个:按钮的突出显示状态仅是在点击按钮时,因此将按钮更改为此状态并不完全正确。还有另一个合适的控制状态,selectedState
如果您在该按钮的 IBAction 中修改选定状态,它将起作用。在您点击按钮的那一刻破解按钮的突出显示状态,这是错误的。
-(IBAction)touch:(UIButton *) tappedButton {
[myButton setSelected:YES]
}
您只需要为 selectedState 提供资源。您可以通过 xib (在属性检查器中选择按钮的状态进行选择,您可以添加 textColor 背景等)或通过代码:
[self.button setImage:[UIImage imageNamed:image] forState:UIControlStateSelected];
[button setHighlighted:YES]
您可以通过在下一个运行循环中执行以下操作来解决此问题:
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
如果它不起作用,您可以尝试这种替代方法:
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
当我需要让某个按钮高亮显示一段时间时,我自己也遇到过这样的麻烦。
确保您添加到按钮的目标是 IBAction 类型。在片段的帮助下,让我向您展示:
@property (strong, nonatmoic) UIButton *myBtn;
在 .m文件中,
self.myBtn = [[UIButton alloc]init];
self.myBtn = [UIButton buttonWithType : UIButtonTypeCustom];
[self.myBtn addTarget:self selector:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
然后在声明目标方法的同时
-(IBAction)btnPressed: (id)sender
{
UIButton *btnObj = (UIButton*).sender;
[btnObj setHighlighted:true];
}
这样做肯定会解决您的问题,因为按下的按钮将响应 IBAction 并且 发件人 将帮助定义响应此方法的按钮。
按钮在被选中时突出显示。所以尝试调用 [button setSelected:YES];
而不是[button setHighlighted:YES];
可能这对你有帮助。
UIButton 有 4 种状态:正常、突出显示、选中和禁用。
- 如果 UIButton 被启用,当你触摸它时,突出显示将被激活。释放时会变回正常状态。还有命令 [button setHighlighted:YES]; 只需让它在很短的时间内变为突出显示状态并自动恢复正常。这就是你不能保持按钮突出显示的原因。
- 要保留它,您必须使用@Vineet Singh 回答的两种方法。但是您需要 setHighlighted:NO 将其恢复为正常状态。
您可以使用 [button setSelected:YES/NO]; 进行控制,但您需要 setImageForState 或 setTitleForState 与 Highlighted 状态相同。