0

我有一个按钮,我想使用突出显示的属性突出显示。在界面生成器中,突出显示的属性起作用并将按钮更改为明显突出显示的状态。但是,在代码中,当我写 [myButton setHighlighted:YES]; 没有什么变化。关于为什么这不起作用的任何想法?

4

5 回答 5

4

请记住,正确的行为是下一个:按钮的突出显示状态仅是在点击按钮时,因此将按钮更改为此状态并不完全正确。还有另一个合适的控制状态,selectedState

如果您在该按钮的 IBAction 中修改选定状态,它将起作用。在您点击按钮的那一刻破解按钮的突出显示状态,这是错误的。

-(IBAction)touch:(UIButton *) tappedButton {
    [myButton setSelected:YES]
}

您只需要为 selectedState 提供资源。您可以通过 xib (在属性检查器中选择按钮的状态进行选择,您可以添加 textColor 背景等)或通过代码:

 [self.button setImage:[UIImage imageNamed:image] forState:UIControlStateSelected];
于 2013-07-25T14:29:08.873 回答
1

[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; }];
}
于 2013-07-25T14:19:10.420 回答
1

当我需要让某个按钮高亮显示一段时间时,我自己也遇到过这样的麻烦。

确保您添加到按钮的目标是 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 并且 发件人 将帮助定义响应此方法的按钮。

于 2013-07-26T11:23:35.483 回答
0

按钮在被选中时突出显示。所以尝试调用 [button setSelected:YES];而不是[button setHighlighted:YES]; 可能这对你有帮助。

于 2013-07-25T14:28:33.570 回答
0

UIButton 有 4 种状态:正常、突出显示、选中和禁用。

- 如果 UIButton 被启用,当你触摸它时,突出显示将被激活。释放时会变回正常状态。还有命令 [button setHighlighted:YES]; 只需让它在很短的时间内变为突出显示状态并自动恢复正常。这就是你不能保持按钮突出显示的原因。

- 要保留它,您必须使用@Vineet Singh 回答的两种方法。但是您需要 setHighlighted:NO 将其恢复为正常状态。

您可以使用 [button setSelected:YES/NO]; 进行控制,但您需要 setImageForState 或 setTitleForState 与 Highlighted 状态相同。

于 2013-07-25T14:50:16.827 回答