#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, если я нажимаю кнопку умножения, она отключает кнопку и устанавливает для нее значение «ДА». Если я нажимаю кнопку =, она устанавливает ее в значение «ДА», снова включая ее. Однако, когда я нажимаю кнопку =, она никогда не включает ее снова. Однако часть отключения работает нормально.