2013-07-18 3 views
-1

У меня есть UIButton, который я пытаюсь отключить, когда срабатывает его действие. Это не имеет никакого эффекта:setEnabled: NO не работает для кнопки iOS

[self.controlBTN setEnabled:NO]; 

Просто отвратить неизбежный вопрос, self.controlBTN действительно указывает на кнопку в вопросе. Я предлагаю в качестве доказательства тот факт, что если я заменю его на это заявление:

[self.controlBTN setTitle:@"What?" forState:UIControlStateNormal]; 

название изменяется. Итак, я могу изменить заголовок, но я не могу отключить кнопку. Зачем? Документы говорят, что включено - это свойство, и не упоминайте, что оно доступно только для чтения.

+1

Что вы подразумеваете под отключением? Вы хотите, чтобы кнопка была скрытой или только незаметной? –

+0

Вы уверены, что подключили кнопку из раскадровки с недвижимостью? если не поэтому. – Moy

+0

Что значит «когда срабатывает его действие»? Вы пытаетесь отключить его после того, как он срабатывает? Где у вас этот код? – rdelmar

ответ

4

[UIButton setEnabled:(BOOL)enabled] будет работать без проблем. Вы либо устанавливаете его обратно на YES, либо вы, вероятно, перераспределяете эту кнопку и добавляете ее обратно в виде надстройки над старой кнопкой (используя тот же фрейм).

Такие ошибки случаются чаще, чем вы думаете, особенно когда кнопка помещается на UITableViewCell.

Вы не разместили код для того, где вы создаете кнопку, поэтому я в лучшем случае могу предложить вам умозрительный ответ. Если вы разместите больше кода, я могу предоставить вам лучший ответ.

0

Извините, ребята ... То, что я не упомянул, заключается в том, что я пытался повторно использовать UIButton после задержки, используя dispatch_after(). К сожалению, это заявление:

dispatch_after (2 * NSEC_PER_SEC, dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{[sender setEnabled: YES];});

был выполнен моментально, поэтому оказалось, что setEnabled: не работает.

я теперь более внимательно прочитать документацию по при параметра, заменив 2 * NSEC_PER_SEC с dispatch_time (DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC) и все работает как надо.

Mea culpa.

+0

Итак, вы как-то настраивали его на YES ... :) – Sid

+0

Да, Сид, вы правы (и я пометил ваш ответ соответственно ... Я действительно отложил его). Спасибо за вашу помощь! –

Смежные вопросы