Я разрабатываю библиотеку Календаря, похожую на стандартное приложение iOS Календарь, Дневной обзор (повестка дня).
Календарь отображает события, которые являются подклассами UIView
. События могут быть нажаты, длительно нажаты или могут обрабатывать другое пользовательское взаимодействие на основе жестов.
Иногда CurrentTimeIndicator
, который также является составным подклассом UIView
, может перекрывать Event
.
И Event
, и CurrentTimeIndicator
имеют общее суперпредставление TimelineView
.
Вместе они выглядят так:
Когда нет CurrentTimeIndicator
поверх Event
, все работает нормально, и я мог вызвать события взаимодействия с пользователем, коснувшись представления. Однако когда CurrentTimeIndicator
перекрывает Event
, события касания, полученные индикатором, игнорируются и не передаются в базовое представление Event
.
Цель состоит в том, чтобы исключить CurrentTimeIndicator
из респондента. полностью цепочка, но пусть Event
обрабатывает любые сенсорные события, даже если они скрыты CurrentTimeIndicator
.
Иерархия просмотра:
И индикатор, и событие являются одноуровневыми представлениями. При нажатии на событие в выделенном касании касания не доставляются.
До сих пор я пробовал экспериментировать с userInteractionEnabled = true / false
, переопределяя hitTest: withEvent: метод.
Какие существуют другие способы решения проблемы?
Ссылки на код:
Просмотр событий - создание распознавателей жестов Временная шкала - текущее время макета индикатор Индикатор текущего времени - код
Концептуально, я ищу что-то похожее на свойство zPosition CALayer
, но на ощупь вход.