Я хотел бы использовать UIGestureRecognizer, чтобы различать два вида жестов: те, которые встречаются в мини-UIView, и те, которые встречаются где-либо еще в представлении.
Я думал, что мог бы добиться этого с двумя GestureRecognizer, используя requireGestureRecognizerToFail,Тем не менее, GestureRecognizer родительского представления никогда не срабатывает.Почему это так?
Вот пример демонстрационного теста:
-(void)viewDidLoad {
UIView *miniView = [[[UIView alloc] initWithFrame:CGRectMake(100,100,20,20)] autorelease];
miniView.backgroundColor = [UIColor redColor];
[self.view addSubview:miniView];
// triggered when you tap the miniView
UITapGestureRecognizer *miniTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(miniTap:)] autorelease];
[miniView addGestureRecognizer:miniTap];
// expected: triggered when you tap anywhere outside the mini-view
// actual: never triggered!
UITapGestureRecognizer *nonMiniTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(nonMiniTap:)] autorelease];
[nonMiniTap requireGestureRecognizerToFail:miniTap];
[self.view addGestureRecognizer:nonMiniTap];
[super viewDidLoad];
}
-(void)miniTap:(id)sender { NSLog(@"miniTap"); }
-(void)nonMiniTap:(id)sender { NSLog(@"nonMiniTap"); }
Почему requireGestureRecognizerToFail: предотвращает запуск nonMiniTap когда-либо?Можно ли заставить его вести себя ожидаемым образом?