У меня есть набор UIViews, которые наложены друг на друг, как это:Как ограничить UIGestureRecognizer определенным UIView?
- UIWindow
- UIViewController
- UIView (охватывает все окно; тег: 41)
- UIView (тэг: 100 (покрывает верхние половина UIView (тэг: 41))
- UIScrollView (в нижней части; тег: 126)
- UIView (охватывает UIScrollView; тег: 21)
- UIView (тег: 22) < ----- охватывает часть тега-21 UIView
Верхний UIView (Тэг: 22) является единственным UIView, что я хочу краны, которые будут признаны за. Используя NSLog, тег всегда ссылается на тег: 41.
Вот мой код в ViewController (-viewDidLoad метод):
// Create and initialize a tap gesture
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:tap];
Это код, который обрабатывает кран (также помещен в VC)
- (void)singleTap:(UIGestureRecognizer*)gestureRecognizer {
CGPoint pt = [gestureRecognizer locationInView:self.view];
UIView *v = [self.view hitTest:pt withEvent:nil];
NSLog(@"\n\nx: %ld\ny: %ld\ntag: %d",(long)pt.x, (long)pt.y, self.view.tag);
if ([v isKindOfClass:[SubViewData class]]) {
NSLog(@"SubViewData!");
return;
}
}
Чтение руководства по обработке событий (стр. 32) Я вижу, что первое представление, которое попадает под ограничения области прослушивания, является тем, которое получает привет t-test, который в этом случае будет тегом: 41. Мне нужно тег: 22, чтобы получить тест удар, потому что есть еще один UIView (тег: 100), сидя на верхней части тега: 41, который также признает, кран ...
ОБНОВЛЕНО: Я добавил код для обработки кранов ... есть ли способ, который я могу программно отклонить краны, если это не для UIVIew тега: 22?
К которому Вы добавили распознаватель жестов? –
Добавлено в viewController для тега: 41 ... тег: 22 не имел собственного VC ... (я думаю, я должен был упомянуть, что есть VC между UIWindow и UIView с тегом: 41) – SpokaneDude
Почему вы не добавляете признак gesturer для рассматриваемого вопроса напрямую? – Till