Keep iPhone UIButton Highlighted
I have the following code snippets:
@interface Foo: UIViewController {
...
UIButton *myButton;
...
}
@implementation Foo
- (void) viewDidLoad {
...
myButton.highlighted = YES;
...
}
When I run the app, the button is highlighted in blue (default behavior). It works as I expected.
But after pressing the button once, the button is no longer highlighted.
Then, I created an IBAction
highlightButton
to handle Touch Up Insi开发者_开发百科de
event where I explicitly call myButton.highlighted = Yes;
. Unfortunately, the button highlight still does not stay.
How can I keep it highlighted in blue even after being pressed?
The solution is to do [button setHighlighted:YES]
in the next runloop:
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
The simplest code is here.
dispatch_async(dispatch_get_main_queue(), ^{
[button setHighlighted:YES];
});
An alternate way to run this is by sending a block to the main operation queue:
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
精彩评论