UIGestureRecognizer为UIView的一部分

我在iOS应用程序中使用UIGestureRecognizer,并遇到一些问题。

我只想让手势在视图的某个区域工作,所以我创build了一个具有特定框架的新UIView,并将其添加到根视图。 手势正常工作,但现在唯一的问题是,我不能点击在新视图下的东西(在根视图上的对象)。 如果我将userInteractionEnabled设置为NO,它将打破手势,因此不是一个选项。

我能做些什么来解决这个问题?

谢谢。

不要为您的手势识别器创build新的视图。 识别器实现了一个locationInView:方法。 将其设置为包含敏感区域的视图。 在handleGesture上,点击testing您关心的区域,如下所示:

0)在包含您所关心的区域的视图上执行所有这些操作。 不要仅为手势识别器添加特殊视图。

1)设置mySensitiveRect

@property (assign, nonatomic) CGRect mySensitiveRect; @synthesize mySensitiveRect=_mySensitiveRect; self.mySensitiveRect = CGRectMake(0.0, 240.0, 320.0, 240.0); 

2)创build您的gestureRecognizer:

 gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; [self.view addGestureRecognizer:gr]; // if not using ARC, you should [gr release]; // mySensitiveRect coords are in the coordinate system of self.view - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer { CGPoint p = [gestureRecognizer locationInView:self.view]; if (CGRectContainsPoint(mySensitiveRect, p)) { NSLog(@"got a tap in the region i care about"); } else { NSLog(@"got a tap, but not where i need it"); } } 

敏感的矩形应该在myView的坐标系中初始化,这个坐标系是你附加识别器的视图。