Подтвердить что ты не робот

Сохранить iPhone UIButton Highlighted

У меня есть следующие фрагменты кода:

@interface Foo: UIViewController {
  ...
  UIButton *myButton;
  ...
}

@implementation Foo

- (void) viewDidLoad {
  ...
  myButton.highlighted = YES;
  ...
}

Когда я запускаю приложение, кнопка выделяется синим цветом (поведение по умолчанию). Он работает так, как я ожидал.

Но после однократного нажатия кнопки кнопка больше не будет выделена.

Затем я создал IBAction highlightButton для обработки события Touch Up Inside, где я явно вызываю myButton.highlighted = Yes;. К сожалению, подсветка кнопки не остается.

Как я могу сохранить его выделенным синим цветом даже после нажатия?

4b9b3361

Ответ 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; }];
}