나는 선택 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