我有以下代码片段:
@interface Foo: UIViewController {
...
UIButton *myButton;
...
}
Run Code Online (Sandbox Code Playgroud)
@implementation Foo
- (void) viewDidLoad {
...
myButton.highlighted = YES;
...
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,该按钮以蓝色突出显示(默认行为).它按我的预期工作.
但按下按钮一次后,该按钮不再突出显示.
然后,我创建了一个IBAction highlightButton处理Touch Up Inside我明确调用的事件myButton.highlighted = Yes;.不幸的是,按钮突出显示仍然不会停留.
如果按下后如何将其突出显示为蓝色?
Wer*_*her 45
解决方案是[button setHighlighted:YES]在下一个runloop中执行:
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
Run Code Online (Sandbox Code Playgroud)
mis*_*may 13
最简单的代码就在这里.
dispatch_async(dispatch_get_main_queue(), ^{
[button setHighlighted:YES];
});
Run Code Online (Sandbox Code Playgroud)
另一种运行方法是将块发送到主操作队列:
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15534 次 |
| 最近记录: |