画面の大部分を占めるカスタム注釈ビューがあります。その中にはUITableViewといくつかのラベルがあります。
UITableViewは、セルの選択を正しく処理します。ただし、UITableViewまたはカスタム注釈ビューの任意の場所をダブルタップすると、マップがズームします。
まず、それがどのように起こっているのかを理解したいと思います。そして第二に、それが起こらないようにする方法。
私はこれを理解したと思います。何が起こっているのかというと、MKMapViewにはジェスチャレコグナイザーが接続されています。
MKMapViewをサブクラス化し、shouldReceiveTouchを実装することで、この問題の一部を修正しました。ダブルタップはまだ注釈ビューを通過していますが、それはそれほど問題ではありません。本当のユーザビリティの問題はシングルタップでした。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
UIView * v = touch.view;
while( v ){
if( [v isKindOfClass:[SPAnnotationView class]] ){
SPAnnotationView * aV = (SPAnnotationView *)v;
if( [aV isExtendedAnnotation]){
return NO;
}
}
v = v.superview;
}
return [super gestureRecognizer:gestureRecognizer shouldReceiveTouch:touch];
}