Правильная сигнатура метода для действия
- (IBAction)action:(id)sender
Ваше приложение падает, потому что вашему объекту отправляется сообщение, которое он не понимает.
Попробуйте заменить ваш код чем-то вроде:
- (IBAction)hideKB:(id)sender {
UIButton *button = (UIButton *)sender;
[button setTitle:@"↓" forState:UIControlStateNormal];
}
Как вы можете заметить, я также изменил строку, которая устанавливает заголовок кнопки. Это связано с тем, что вам никогда не следует напрямую манипулировать свойством UIButton
titleLabel
, а использовать соответствующий метод установки, как показано выше.
Редактировать: Для пояснения, большинство элементов управления позволят вам использовать точечные обозначения для редактирования свойства text
их titleLabel
. Однако экземпляры UIButton
поддерживают разные заголовки (а также изображения и фоновые изображения) в зависимости от состояния, в котором они находятся.
Если вам интересно, почему UIButton
может находиться в одном из нескольких разных состояний, хороший пример, который вы часто видите, это кнопки, которые «неактивны». Это означает, что эти кнопки находятся в состоянии UIControlStateDisabled
. Вы можете найти список всех возможных состояний для элемента управления в документации .