Держите iPhone UIButton выделенным - PullRequest
23 голосов
/ 18 февраля 2010

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

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

@ реализация Foo

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

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

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

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

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

Ответы [ 3 ]

45 голосов
/ 14 сентября 2011

Решение состоит в том, чтобы сделать [button setHighlighted:YES] в следующем цикле выполнения:

- (void)highlightButton:(UIButton *)b { 
    [b setHighlighted:YES];
}

 - (IBAction)onTouchup:(UIButton *)sender {
    [self performSelector:@selector(highlightButton:) withObject:sender afterDelay:0.0];
}
13 голосов
/ 03 апреля 2013

Самый простой код здесь.

dispatch_async(dispatch_get_main_queue(), ^{
    [button setHighlighted:YES];
});
7 голосов
/ 09 октября 2012

Альтернативный способ выполнить это - отправить блок в основную очередь операций:

-(void)onTouchup:(UIButton*) button
{
    [NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...