Держите iPhone UIButton выделенным

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

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

@implementation Foo

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

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

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

Затем я создал IBActionhighlightButton обрабатывать 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; }];
}
Другие вопросы по тегам