Вопрос проверяет понимание механизма определения точки касания внутри иерархии вью.
При касании iOS вызывает hitTest(_:with:) у корневой вью, которая рекурсивно спускается по иерархии: проверяет point(inside:) для каждого сабвью в обратном порядке z-оси. Первый вью, чей point(inside:) возвращает true, получает событие. Таким образом определяется конечная цель касания.
Процесс hit-testing:
Системный UIKit вызывает hitTest на UIWindow.
hitTest проверяет isUserInteractionEnabled, alpha > 0.01, !isHidden.
Если базовые проверки пройдены, вызывает point(inside:with:).
Рекурсивный обход:
Идёт по сабвью в обратном порядке (for subview in subviews.reversed()).
У первого подходящего сабвью вызывает его hitTest — далее глубже.
Возврат результата:
Если ни одно сабвью не подходит, возвращает саму вью, если точка внутри.
Иначе возвращает nil, событие не обрабатывается.
Переопределение:
Можно перекрыть point(inside:with:), чтобы расширить/сократить область нажатия.
Переопределять hitTest редко — при сложных контейнерах.
Вывод:
Механизм hitTest обеспечивает точную маршрутизацию касаний и даёт точки расширения через переопределение.