Какая разница между:
myBarButtonItem.enabled = NO;
и
myBarButtonItem.userInteractionEnabled = NO;
Кнопка становится серым каждый раз?
Какая разница между:
myBarButtonItem.enabled = NO;
и
myBarButtonItem.userInteractionEnabled = NO;
Кнопка становится серым каждый раз?
Из документации яблока uibarbuttonitem не обладает свойством userInteractionEnabled. Поскольку он наследуется от UIBarItem Class Reference, он также не имеет свойства userInteractionEnabled.
А также, если вы используете эту строку myBarButtonItem.userInteractionEnabled = NO;
ваше приложение выйдет из строя.
Если вы не хотите, чтобы ваша кнопка нажата, используйте это: - myBarButtonItem.enabled = NO;
Также см. Документацию по яблоку.
Для обычной кнопки: -
myButton.userInteractionEnabled = NO; не вызовет эффекта в изображении вашего изображения, и вы также не можете его нажимать.
myButton.enabled = НЕТ; приведет к тому, что тень появится на вашем изображении кнопки, и вы также не можете нажать на нее.
Я прочитал документацию, и вот мои выводы.
UIButton
наследует от UIControl
логическое свойство enabled
Логическое значение, определяющее включен ли приемник.
Укажите ДА для управления включен; в противном случае укажите NO, чтобы сделать он отключен. Значение по умолчанию - YES. Если включенное состояние равно NO, управление игнорирует события касания и подклассы могут различаться.
UIControl
наследует от UIView
логическое свойство userInteractionEnabled
:
Логическое значение, определяющее игнорируются ли пользовательские события и удалены из очереди событий.
Если установлено значение НЕТ, пользовательские события, такие как сенсорный и клавиатурный вид игнорируются и удаляются из очередь событий. Если установлено значение YES, события доставляются к просмотру в обычном режиме. Значение по умолчанию: YES.
Отсюда я заключаю
button.userInteractionEnabled = NO
означает, что кнопка выглядит нормально, но не реагирует на касания (из наследования UIView
).
button.enabled = NO
означает, что кнопка выделена серым цветом и не отвечает на касания (из наследования UIControl
).
UIBarButtonItem
не имеет свойства, называемого userInteractionEnabled
, только UIView
, и его подклассы имеют это свойство.
Итак, короче говоря,
myBarButtonItem.userInteractionEnabled = NO;
не будет серой кнопки, это приведет к сбою вашей программы.
Установка свойства enabled
на NO
, тем не менее, будет серой.