Включение / выключение кнопки

#iphone #objective-c

#iPhone #objective-c

Вопрос:

Я новичок в программировании iPhone, и когда я использую этот код для включения / выключения кнопки, ничего не происходит. Я подключил свою кнопку через IBOutlet, и я знаю, что когда я отключаю ее в viewDidLoad, она работает. Я просто не могу понять, почему этот метод не работает.

 - (void) multiplicationButtonPressed {
    if (multiplicationIsPressed) {
        multiplicationButton.enabled = NO; 
    } else {
        multiplicationButton.enabled = YES; 
    }
}
  

Комментарии:

1. Что такое multiplicationIsPressed ? Возможно, это всегда false.

2. Задаете ли вы значение переменной multiplicationIsPressed? Подключили ли вы IBOutlett кнопки в IB к кнопке?

3. как только вы отключите кнопку, IBAction больше не будет работать в одиночку, потому что вы отключили кнопку для этого. Попробуйте использовать выбранное состояние для вашей цели. смотрите мой обновленный ответ.

Ответ №1:

Пожалуйста, проверьте, правильно ли подключен ваш IBOutlet к этой кнопке или нет, а затем

используйте этот фрагмент кода

 - (IBAction) multiplicationButtonPressed 
 {
    multiplicationButton.selected = !multiplicationButton.selected;
 }
  

Вот и все. Вам не нужно иметь никакого логического флага. Это работает как переключение.

Комментарии:

1. Метод multiplicationButtonPressed не будет вызван, если вы отключите кнопку. Я не думаю, что это сработает.

2. @Chandan shetty SP извините за мою ошибку. Спасибо за информацию.

3. Спасибо за информацию, ребята, это была именно проблема. Теперь это имеет гораздо больше смысла. Серьезно, спасибо миллиард.

Ответ №2:

Пожалуйста, проверьте, правильно ли подключен ваш IBOutlet к этой кнопке или нет, а затем

Используйте этот код

  - (IBAction) multiplicationButtonPressed 
 {
     if (multiplicationIsPressed) {
          multiplicationButton.userInteractionEnabled = NO; 
     } else {
          multiplicationButton.userInteractionEnabled = YES; 
     }
 }
  

Ответ №3:

Существует множество причин, по которым это может привести к сбою. Без дополнительного контекста мы можем только догадываться.

  • Если multiplicationButtonPressed вызывается до загрузки представления, кнопка еще не создана.
  • Вы говорите, multiplicationButton что он подключен как IBOutlet в IB, но вы можете ошибаться. Это действительно подключено?
  • Если multiplicationButtonPressed это действие для кнопки или другого элемента управления, оно, вероятно, на самом деле не подключено к тому, к чему оно должно быть подключено. Это особенно вероятно, поскольку вы объявили это как (void) , а не (IBAction) как, поэтому, если объявление в файле .h не совпадает, IB даже не увидит его.
  • Если (как следует из названия) multiplicationButtonPressed это действие для multiplicationButton самого себя, оно никогда не будет вызвано, когда кнопка в данный момент не включена, потому что кнопка с enabled значением NO никогда не будет реагировать на касания.
  • Или та же проблема может существовать где-то выше по иерархии представлений: ни одно подвидовое представление вида, для userInteractionEnabled которого установлено значение NO, также не может реагировать на касания.
  • Или возможно, что ваш макет испорчен, и любая кнопка, которая должна запускать это событие, на самом деле не входит в рамки всех ее родительских представлений. Если указанный родительский вид не привязан к границам, вы все равно можете видеть кнопку, но не взаимодействовать с ней.

Комментарии:

1. Спасибо. Извините, что упустил дополнительную информацию. У меня multiplicationButtonPressed настроено как значение BOOL. У меня есть IBActions, если я нажимаю кнопку умножения, она отключает кнопку и устанавливает для нее значение «ДА». Если я нажимаю кнопку =, она устанавливает ее в значение «ДА», снова включая ее. Однако, когда я нажимаю кнопку =, она никогда не включает ее снова. Однако часть отключения работает нормально.