Представьте себе представление, скажем, с 4 подпредставлениями, расположенными рядом друг с другом, но не перекрывающимися.Давайте назовем их view # 1 ... view # 4
Все 5 таких представлений являются моими собственными подклассами UIView (да, я читал: Обработка событий , а также iOSРуководство по событиям и этот SO вопрос и этот один , еще не отвеченный)
Когда пользователь касается одного из них, UIKit "hiTests" его и доставляетпоследующие события для этого представления: представление # 1
Даже когда палец выходит за пределы представления # 1, более, скажем, представление # 3.
Даже если это «перетаскивание» теперь над представлением № 3,представление # 1 все еще получает touchchesMoved, но представление # 3 ничего не получает.
Я хочу, чтобы представление # 3 начало отвечать на прикосновения.Может быть, с моим собственным «touchedEntered» и, возможно, с «touchesExited» на представлении №1.
Как бы я поступил об этом?
Я вижу два подхода.
- обходите проблему и выполняйте всю обработку прикосновений в родительском представлении всякий раз, когда я обнаруживаю прикосновения, перемещенные за пределы границ вида # 1, или
- переходим в родительское представление, сообщая ему «redispatch»,Не очень понятно, как будет работать такая повторная отправка.
Для решения № 2, где я запутался, речь идет не о пересылке как таковой, , а о том, как найти UIVIew Iхочу переслать на. Я, очевидно, могу циклически просматривать родительские подпредставления, пока не найду тот, чьи границы / фрейм содержат касание, но мне интересно, если я что-то упустил, то Apple бы уже предоставила, но я не могуотносятся к этой проблеме.
Есть идеи?