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