Моя проблема: у мене є огляд, EditViewякий займає в основному весь додаток, і підвід, MenuViewякий займає лише нижню частину ~ 20%, а потім MenuViewмістить свій власний підвид, ButtonViewякий фактично знаходиться за межами MenuViewкордонів (приблизно так :) ButtonView.frame.origin.y = -100.
(примітка: EditViewє інші підпрограми, які не є частиною MenuViewієрархії подання, але можуть вплинути на відповідь.)
Ви, мабуть, вже знаєте проблему: коли ButtonViewце в межах MenuView(або, точніше, коли мої дотики знаходяться в MenuViewмежах), ButtonViewреагує на дотикові події. Коли мої дотики виходять за MenuViewмежі (але все ще в ButtonViewмежах), жодна сенсорна подія не отримується ButtonView.
Приклад:
- (Е) є
EditViewбатьком усіх поглядів - (M) -
MenuViewце підпрогляд EditView - (B) -
ButtonViewце підпрогляд MenuView
Діаграма:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Оскільки (B) знаходиться поза рамкою (M), дотик в області (B) ніколи не надсилатиметься до (M) - насправді, (M) в цьому випадку ніколи не аналізує дотик, а дотик надсилається до наступний об’єкт в ієрархії.
Мета: Я розумію, що перевизначення hitTest:withEvent:може вирішити цю проблему, але я не розумію, як саме. У моєму випадку, повинні hitTest:withEvent:бути перевизначені в EditView(мій «майстер» надтабліци)? Або це слід MenuViewзамінити, безпосередній перегляд кнопки, яка не отримує дотиків? Або я думаю про це неправильно?
Якщо для цього потрібні довгі пояснення, корисний хороший Інтернет-ресурс був би корисним - за винятком документів UIView від Apple, які мені не дали зрозуміти.
Дякую!