Моя проблема: у мене є огляд, 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, які мені не дали зрозуміти.
Дякую!