Сохранить iPhone UIButton Highlighted
У меня есть следующие фрагменты кода:
@interface Foo: UIViewController {
...
UIButton *myButton;
...
}
@implementation Foo
- (void) viewDidLoad {
...
myButton.highlighted = YES;
...
}
Когда я запускаю приложение, кнопка выделяется синим цветом (поведение по умолчанию). Он работает так, как я ожидал.
Но после однократного нажатия кнопки кнопка больше не будет выделена.
Затем я создал IBAction
highlightButton
для обработки события Touch Up Inside
, где я явно вызываю myButton.highlighted = Yes;
. К сожалению, подсветка кнопки не остается.
Как я могу сохранить его выделенным синим цветом даже после нажатия?
Ответы
Ответ 1
Решение состоит в том, чтобы сделать [button setHighlighted:YES]
в следующей runloop:
- (void)highlightButton:(UIButton *)b {
[b setHighlighted:YES];
}
- (IBAction)onTouchup:(UIButton *)sender {
[self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
Ответ 2
Самый простой код здесь.
dispatch_async(dispatch_get_main_queue(), ^{
[button setHighlighted:YES];
});
Ответ 3
Альтернативный способ запускать это - отправить блок в основную очередь операций:
-(void)onTouchup:(UIButton*) button
{
[NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}