したがって、私は Objective-C に比較的慣れていないため、かなり明らかな何かが欠けている可能性が明確にあるので、そうであれば、気軽にトマトを投げてください。これが私の問題です:
1 つの で構成される iPhone シングルビュー アプリケーションがありますMapView
。MapView
ピンに注釈を付けたりドロップしたりするために、長押しジェスチャ認識機能を含めました。これは、指定しなければうまくいくようminimumPressDuration
です...
- (void)viewWillAppear:(BOOL)animated {
UILongPressGestureRecognizer * longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[mapView addGestureRecognizer:longPressRecognizer]; // Actual map view handler is added to
...
}
-(void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
NSLog (@"Did it work?!");
// Some code here to make pins appear; omitted for simplicity in this question
}
予想どおり、マップを長押しすると、0.5
数秒後 (デフォルトの時間) にマップ上に 1 つのピンが表示されます。指の周りを動かすと、ピンがたくさんあります。ログには「うまくいきましたか?!」も出力されます。何度も何度も。繰り返しますが、予想されます。ただし、viewWillappear メソッドに小さな行を 1 行追加すると (メッセージ mapView の直前addGestureRecognizer
):
longPressRecognizer.minimumPressDuration = 1.0;
...ジェスチャーが機能しなくなりました。1秒間押し続けても、ログには何も表示されません。放して、1 秒以上試してみてください... 何もありません。ピンはドロップされず、ログには何も出力されません。なぜこれが起こっているのですか?最小期間を設定するとこれが壊れる理由がわかりません。私の期待は、これが以前と同じように機能することです-カスタム設定された最小プレス時間はありません-唯一の違いは、1秒の半分ではなく1秒押す必要があることです.
更新: との間の値を選択すると、0.1
機能するよう0.5
です。しかし、一度以上に行くとうまくいき0.6
ません。私が知らない Obj-C のフードの下で何かが起こっていますか?
また、ハンドラー関数で状態をチェックする必要があることもわかっているので、それで問題が解決しない限り、私に負担をかけないでください。詳細を掘り下げる前に、基本的な機能を最初に動作させたいだけです。
ありがとう!
PS、OS X 10.8.2 および Xcode 4.5.1 (4G1004) を使用。