Не создавайте новый вид для вашего распознавателя жестов. Распознаватель реализует метод locationInView:. Установите его для представления, которое содержит чувствительный регион. На маркере handleGesture выполните тестирование региона, который вас интересует, следующим образом:
0) Делайте все это в представлении, содержащем интересующий вас регион. Не добавляйте специальный вид только для распознавателя жестов.
1) Настройка mySensitiveRect
@property (assign, nonatomic) CGRect mySensitiveRect;
@synthesize mySensitiveRect=_mySensitiveRect;
self.mySensitiveRect = CGRectMake(0.0, 240.0, 320.0, 240.0);
2) Создайте жест-распознаватель:
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, в том же виде, к которому вы присоединяете распознаватель.