Что такое UIResponder в iOS?

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

Ответ

UIResponder — это базовый класс в UIKit, объекты которого могут получать и обрабатывать события (касания, встряхивания, нажатия клавиш).

Ключевые наследники:

  • UIView
  • UIViewController
  • UIApplication

Цепочка респондеров (Responder Chain) — это иерархический путь, по которому необработанное событие передаётся от первого респондера (например, нажатой кнопки) вверх, пока не будет обработано или цепочка не закончится.

Пример обработки касания в кастомной вью:

class CustomView: UIView {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        print("Касание началось в CustomView")
        // Если не вызвать super, событие не пойдёт дальше по цепочке
        super.touchesBegan(touches, with: event)
    }
}

Основные методы UIResponder:

  • touchesBegan(_:with:), touchesMoved(_:with:), touchesEnded(_:with:), touchesCancelled(_:with:)
  • canPerformAction(_:withSender:)
  • becomeFirstResponder() / resignFirstResponder()