Разница между свойствами UIBarButtonItem

Какая разница между:

myBarButtonItem.enabled = NO;

и

myBarButtonItem.userInteractionEnabled = NO;

Кнопка становится серым каждый раз?

Ответ 1

Из документации яблока uibarbuttonitem не обладает свойством userInteractionEnabled. Поскольку он наследуется от UIBarItem Class Reference, он также не имеет свойства userInteractionEnabled.

А также, если вы используете эту строку myBarButtonItem.userInteractionEnabled = NO; ваше приложение выйдет из строя.

Если вы не хотите, чтобы ваша кнопка нажата, используйте это: - myBarButtonItem.enabled = NO; Также см. Документацию по яблоку.

Для обычной кнопки: -

myButton.userInteractionEnabled = NO; не вызовет эффекта в изображении вашего изображения, и вы также не можете его нажимать.

myButton.enabled = НЕТ; приведет к тому, что тень появится на вашем изображении кнопки, и вы также не можете нажать на нее.

Ответ 2

Я прочитал документацию, и вот мои выводы.

UIButton наследует от UIControl логическое свойство enabled

Логическое значение, определяющее включен ли приемник.

Укажите ДА для управления включен; в противном случае укажите NO, чтобы сделать он отключен. Значение по умолчанию - YES. Если включенное состояние равно NO, управление игнорирует события касания и подклассы могут различаться.

UIControl наследует от UIView логическое свойство userInteractionEnabled:

Логическое значение, определяющее игнорируются ли пользовательские события и удалены из очереди событий.

Если установлено значение НЕТ, пользовательские события, такие как сенсорный и клавиатурный вид игнорируются и удаляются из очередь событий. Если установлено значение YES, события доставляются к просмотру в обычном режиме. Значение по умолчанию: YES.

Отсюда я заключаю

  • button.userInteractionEnabled = NO означает, что кнопка выглядит нормально, но не реагирует на касания (из наследования UIView).

  • button.enabled = NO означает, что кнопка выделена серым цветом и не отвечает на касания (из наследования UIControl).

Ответ 3

UIBarButtonItem не имеет свойства, называемого userInteractionEnabled, только UIView, и его подклассы имеют это свойство.

Итак, короче говоря,

myBarButtonItem.userInteractionEnabled = NO;

не будет серой кнопки, это приведет к сбою вашей программы.

Установка свойства enabled на NO, тем не менее, будет серой.