2012-05-05 2 views
14

Быстрый вопрос: как определить, является ли распознаватель признака касания в пределах подвид представления, к которому он добавлен? Например. если я нажимаю на объект, такой как квадрат, который был добавлен в качестве подзаголовка на фон, к которому добавлен распознаватель жестов, как я могу обнаружить, что он был использован?Как обнаружить жест выделения в подземельях

+0

Просьба четко разъяснить, что вы хотели бы сделать? хотите распознать щелчок на subview? –

ответ

37

Вы можете захватить точку отвода от распознавателя жестов, когда метод вашего обработчика называется соответствующим любому виду, которое вы хотите, используя -locationInView:. Затем используйте следующий метод в UIView: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event, чтобы получить ссылку на фактический подпункт, который был прослушен, помня, что точка, в которой вы проходите, находится в том же координатном пространстве, что и представление.

Некоторый код, чтобы вы начали:

CGPoint point = [tapGestureRecognizer locationInView:parentView]; 
UIView *tappedView = [parentView hitTest:point withEvent:nil]; 

Для хит тестирования для работы вид должен иметь userInteractionEnabled набор свойств для YES. Многие представления, например UILabel, имеют значение NO по умолчанию. Так что до вышеназванной:

self.subviewOfInterest.userInteractionEnabled = YES; 
+0

Спасибо, что помогает много! – Fitzy

+0

Спасибо @Brandom –

0

вы можете использовать requireGestureRecognizerToFail: признать кран на подвид см this код

13

может быть, вы должны установить в качестве: subviews.userInteractionEnabled = YES; удачи!

+0

Черт! Это то, что мне нужно. Мой subview был проигнорирован gestureRecognizer, и теперь он работает. Благодарю. – surfrider