MKAnnotationView のカスタム サブクラスで UILongPressGestureRecognizer に問題があります。コールバックは断続的にのみ発生します。minimumPressDuration を短くすると、より頻繁に起動します。minimumPressDuration 値が 0.1 の場合、毎回起動します。値が 0.4 の場合、指を離してもまったく発火しません。0.2 では、ヒットまたはミスします。
(以下のように) タップ ジェスチャを使用すると、問題なく動作します。他のビューで LongPress ジェスチャを使用していますが、正常に動作します。私がこの問題を抱えているのは MKAnnotationView だけなので、AnnotationViews の他の内部イベント コールバックのいくつかが干渉している (コールアウトなど) かどうか疑問に思っています。
この問題は、iOS4 (sim と電話) と 3.2 (sim、デバイスを持っていない) で見られます。
ジェスチャ認識エンジンを作成する方法は次のとおりです。
#define USE_LONG_PRESS 1
#define USE_TAP 0
#if USE_LONG_PRESS
UILongPressGestureRecognizer *longPressGR =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleLongPress:)];
longPressGR.minimumPressDuration = 0.2;
[self addGestureRecognizer:longPressGR];
[longPressGR release];
#endif
#if USE_TAP
UITapGestureRecognizer *tapGR =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleTap:)];
[self addGestureRecognizer:tapGR];
[tapGR release];
#endif
コールバック メソッドは、このクラスで次のように定義されます。
- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"LONG PRESS");
}
- (void)handleTap:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"TAP");
}
iPhoneの専門家は、なぜこれが起こっているのか考えていますか?