Создайте подкласс UIView
, назовите его MyTapView
.Присвойте этому классу родительское представление, которое содержит все ваши подпредставления.Переопределите в своем классе следующее, чтобы перехватить любые прикосновения, сделанные к вашему экземпляру * 1003. *
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0) {
for (UIView *subview in self.subviews.reverseObjectEnumerator) {
CGPoint subPoint = [subview convertPoint:point fromView:self];
UIView *result = [subview hitTest:subPoint withEvent:event];
if (result != nil) {
return result;
}
}
}
// use this to pass the 'touch' onward in case no subviews trigger the touch
return [super hitTest:point withEvent:event];
}
Этот метод игнорирует скрытые объекты просмотра, которые отключили взаимодействие с пользователем или имеют уровень альфа менее 0,01,Этот метод не учитывает содержимое представления при определении попадания (не стесняйтесь изменять это).Таким образом, представление все еще может быть возвращено, даже если указанная точка находится в прозрачной части содержимого этого представления и теперь, после ее переопределения, получает прикосновения за пределами границ.