如果我理解正确,如果在 UITableView 上做出手势,您希望 MKMapView 根本不做出反应(在示例中,myMKMapView 的 myTableView 属性是有问题的 UITableView)。如果是这样,你应该实施
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
在您的 MKMapView 子类中(如果您没有子类,请创建一个子类。在此示例中,我将子类称为 myMKMapView)。首先让您的 MKMapView 子类 myMKMapView 符合UIGestureRecognizerDelegate
协议。在 MKMapView 的 .h 文件中:
@interface myMKMapView : MKMapView <UIGestureRecognizerDelegate>
完成此操作后,进入 myMKMapView 的 .m 文件并执行以下操作:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
UIView *view = [self.view hitTest:[touch locationInView:self.view] withEvent:nil];
if ([view isDescendantOfView:(self.myTableView)]) {
return NO;
}
return YES;
}
这告诉 myMKMapView 如果在其 myTableView 属性上执行了一个手势,myMKMapView 应该忽略它。