Моя проблема: У меня есть супервизор EditView, который занимает в основном весь кадр приложения, а subview MenuView, который занимает только нижний ~ 20%, а затем MenuView содержит свой собственный subview ButtonView, который фактически находится за пределами границ MenuView (примерно так: ButtonView.frame.origin.y = -100).
(примечание: EditView имеет другие подзапросы, которые не являются частью иерархии представления MenuView, но могут повлиять на ответ.)
Вероятно, вы уже знаете проблему: когда ButtonView находится в пределах MenuView (или, более конкретно, когда мои касания находятся в пределах MenuView), ButtonView отвечает на события касания. Когда мои касания находятся за пределами границ MenuView (но все еще в пределах ButtonView), событие ButtonView не получает событие касания.
Пример:
- (E)
EditView, родительский элемент всех представлений - (M)
MenuView, подзаголовок EditView - (B) -
ButtonView, подвид меню MenuView
Диаграмма:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Поскольку (B) находится снаружи (M), кратковременное нажатие в области (B) никогда не будет отправлено на (M) - на самом деле, (M) никогда не анализирует прикосновение в этом случае, и прикосновение посылается к следующему объекту в иерархии.
Цель: Я понимаю, что переопределение hitTest:withEvent: может решить эту проблему, но я точно не понимаю. В моем случае, если hitTest:withEvent: будет переопределено в EditView (мой "супервизор" )? Или он должен быть переопределен в MenuView, прямой просмотр кнопки, которая не получает штрихи? Или я думаю об этом неправильно?
Если для этого требуется длинное объяснение, полезный онлайн-ресурс будет полезен - за исключением документов Apple UIView, которые не дали мне понять.
Спасибо!