Что такое свойство isUserInteractionEnabled у UIView?

«Что такое свойство isUserInteractionEnabled у UIView?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

isUserInteractionEnabled — это булево свойство UIView, которое определяет, обрабатывает ли данное представление события касания (тапы, свайпы, драг и т.д.).

Значения и поведение:

  • true (по умолчанию для большинства вью): View получает и обрабатывает touch-события.
  • false: View полностью игнорирует все touch-события. Они "проходят сквозь" эту вью и попадают к представлениям, находящимся ниже в иерархии.
let button = UIButton(type: .system)
button.setTitle("Tap Me", for: .normal)
button.isUserInteractionEnabled = false // Кнопка видна, но нажатия не работают

let containerView = UIView()
containerView.isUserInteractionEnabled = false // Все subviews также перестают быть интерактивными

Ключевые моменты:

  1. Локальность: Отключение взаимодействия для родительской вью (superview) автоматически отключает его для всех её подчинённых вью (subviews).
  2. Влияние только на события: Свойство влияет исключительно на обработку пользовательского ввода. Анимации, изменения фона, текста и другие программные модификации работают как обычно.
  3. Особые случаи: Для UILabel, UIImageView (без специальной настройки) значение по умолчанию — false, так как они изначально считаются неинтерактивными элементами отображения контента.