如果我理解正確,如果在UITableView上創建手勢(例如,myMKMapView的myTableView屬性爲UITableView),您希望MKMapView不會有任何反應。如果是的話,你應該在你的MKMapView的子類中實現
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
(讓子類,如果你沒有一個。我已經叫在這個例子中的子類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應該忽略它。
當您顯示彈出窗口時,請在地圖視圖中設置userInteractionEnabled:NO。 – isaac 2012-07-19 22:45:02
在MKMapView視圖中設置'userInteractionEnabled:'將不允許與地圖視圖或其任何子視圖交互。如果UITableView是MKMapView的子視圖,或者我們想與MKMapview的子視圖中的一個進行交互,這種方法將無法工作。 – 2012-07-24 17:39:31