我有以下代码段:
@interface Foo: UIViewController {
...
UIButton *myButton;
...
}
@implementation Foo
- (void) viewDidLoad {
...
myButton.highlighted = YES;
...
}
当我运行应用程序时,该按钮以蓝色突出显示(默认行为)。它按我的预期工作。
但按下按钮一次后,该按钮不再突出显示。
然后,我创建了一个IBAction
highlightButton
来处理Touch Up Inside
事件,我明确地调用myButton.highlighted = Yes;
。不幸的是,按钮突出显示仍然没有停留。
即使按下后,如何将其突出显示为蓝色?
答案 0 :(得分:45)
解决方案是在下一个runloop中执行[button setHighlighted:YES]
:
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
答案 1 :(得分:13)
最简单的代码就在这里。
dispatch_async(dispatch_get_main_queue(), ^{
[button setHighlighted:YES];
});
答案 2 :(得分:7)
另一种运行方法是将块发送到主操作队列:
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}