我想實現我自己的手勢識別器,除了MKMapView已經使用的手勢識別器之外。現在我可以點擊地圖並設置一個別針。這種行爲是通過我的UITapGestureRecognizer實現的。當我點擊一個已經存在的引腳時,我的手勢識別器什麼都不做,但是顯示了這個引腳的標註泡泡。 UIGestureRecognizerDelegate看起來像這樣:iPhone:將MKMapView與另一個UITapGestureRecognizer結合
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (gestureRecognizer == self.tapRecognizer)
{
bool hitAnnotation = false;
int count = [self.mapView.annotations count];
int counter = 0;
while (counter < count && hitAnnotation == false)
{
if (touch.view == [self.mapView viewForAnnotation:[self.mapView.annotations objectAtIndex:counter]])
{
hitAnnotation = true;
}
counter++;
}
if (hitAnnotation)
{
return NO;
}
}
return YES;
}
這工作正常。我唯一的問題是引腳和雙擊的標註泡泡。通常雙擊是用於放大。這仍然有效,但除此之外,我還得到一個新的引腳。有什麼辦法可以避免這種情況?
另一個問題出現在針的標註泡泡中。我可以通過點擊引腳而不用在這個地方設置一個新的引腳來打開氣泡(見上面的代碼),但是當我想通過點擊它來關閉氣泡時,另一個引腳被設置。我的問題是,我無法檢查touch.view,如果用戶點擊標註泡泡,因爲它不是一個普通的UIView據我所知。任何想法或解決這個問題的方法?
感謝
嗨charshep,非常感謝您的回答。這使我指出了正確的方向。第一個問題似乎解決了。你對第二個問題有什麼建議嗎? – Lars