我想使用UIGestureRecognizers來區分兩種手勢:那些在mini-UIView中出現的手勢和視圖中其他任何地方出現的手勢。識別不在某個子視圖中的手勢
我想我可以用兩個使用requireGestureRecognizerToFail的GestureRecognizer來完成這個任務。但是,父視圖的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從不斷被觸發?我能否以預期的方式行事?
視圖層次結構中所有對象的userInteractionEnabled狀態是什麼? – 2011-06-16 23:43:19