2011-02-15 45 views
35

我想添加一些邏輯,當用戶移動地圖視圖我。即他做了一個平底鍋。但是當我添加手勢識別器並且我想記錄觸摸時,什麼都不會發生。當我在另一個視圖控制器中嘗試它並將識別器添加到控制器的視圖時,它就可以正常工作。關於MKMapView的UIPanGestureRecognizer?

這裏是我的代碼(地圖視圖是應用程序委託的一個屬性,因爲我需要做一些其他的事情與它,即使它是不可見):

- (void)viewDidLoad 
{ 
    ... 
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)]; 
    [appDelegate.mapView addGestureRecognizer:panGesture]; 
    [panGesture release]; 
} 

- (void)showPan 
{ 
    NSLog(@"pan!"); 
} 

我使用最新的iOS 4.2.1

感謝您的任何建議。

回答

128

好吧,因爲沒有人知道,我不得不花了一個蘋果技術支持諮詢。 ; O)

由於明顯的MKMapView都有自己的識別與用戶進行交互,你必須堅持U​​IGestureRecognizerDelegate協議並實施(BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:這樣的:

- (void)viewDidLoad 
{ 
    ... 
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)]; 
    panGesture.delegate = self; 
    [appDelegate.mapView addGestureRecognizer:panGesture]; 
    [panGesture release]; 
} 

- (void)showPan 
{ 
    NSLog(@"pan!"); 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 

然後,它就像一個魅力。

+1

這正是我一直在尋找的,謝謝! – Zebs 2011-03-06 12:34:08