我有選擇MKAnnotationView
後自定義視圖,並與我嘗試添加一個手勢識別這樣的:自定義標註手勢識別
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)selectedAnnotationView {
if([selectedAnnotationView.annotation isKindOfClass:[CustomPinAnnotation class]]) {
CustomPinAnnotation *annotation = selectedAnnotationView.annotation;
[selectedAnnotationView setCalloutOffset:CGPointMake(0,selectedAnnotationView.frame.size.height)];
CalloutView *calloutView = [[CalloutView alloc] initWithFrame:CGRectMake(0, 0, selectedAnnotationView.frame.size.width, selectedAnnotationView.frame.size.height*2)];
[selectedAnnotationView addSubview:calloutView];
[UIView animateWithDuration:annotationAnimationTime animations:^{
[calloutView setFrame:CGRectMake(-expandingAnnotationWidth/8, 0, [calloutView calculateWurstLenghtFromText:selectedAnnotationView.annotation.title], selectedAnnotationView.frame.size.height*2)];
} completion:^(BOOL finished) {
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(calloutTapped:)];
[calloutView addGestureRecognizer:tapGesture];
[calloutView setUserInteractionEnabled:YES];
}];
}
在屏幕下方,你可以看到它的樣子擴大,而不是:
的問題是,手勢識別僅適用於顯着的區域,而不是對整個標註:
我可能知道發生了什麼 - 我添加子視圖到MKAnnotation
這是很小的。但如何解決這個問題?還有另一種繪製標註的方法,或者我可以擴展可點擊區域。
但框架是正確的 - 我看到正確繪圖。除了這個框架被改變與下面提到的動畫幾行。 – Kuba
只需登錄您的calloutView.frame並檢查其值。我可能是錯的,但之前我有過類似的問題,這是造成它的原因。我會看看可能的代碼,看看我如何設法處理這個tapGesture – Pancho
我記錄它:'frame =(-25 0; 270 120);'在動畫之後。是正確的大小。 – Kuba