UIScrollView 内に UIView があり、どちらも IB を使用して作成されています。UIView は、UIScrollView 内で水平にスクロールします。左右の 2 本指スワイプを検出したい。
SmpleGestureRecognizersで見つけたサンプル コードを借用して 、UIScrollView の ViewController の viewDidLoad メソッドに次のコードを追加しました...
UIGestureRecognizer *recognizer;
UISwipeGestureRecognizer *swipeRightRecognizer, *swipeLeftRecognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
swipeRightRecognizer = (UISwipeGestureRecognizer *)recognizer;
swipeRightRecognizer.numberOfTouchesRequired = 2;
[self.view addGestureRecognizer:swipeRightRecognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
swipeLeftRecognizer.numberOfTouchesRequired = 2;
swipeLeftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeLeftRecognizer];
[recognizer release];
私はviewcontroller.hに設定しました。次のデリゲートメソッドがあります...
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
これは有効なgestureRecognizerデリゲートメソッドであると想定していますが、ドキュメントでそれへの参照を見つけることができません.
エラーは発生しませんが、2 本の指でスワイプしても何も起こりません。デリゲート メソッドは呼び出されず、アクション メソッドも呼び出されません。numbeOfTouchesRequired 呼び出しを削除して、1 本の指でスワイプしても無駄になるかどうかを確認してみました。
正しいビューにgestureRecognizersを追加していますか? UIView、UIScrollView、およびself.view.superViewに追加してみました。
サンプルコードはうまく動作します。コードの実装とサンプル コードの唯一の違いは、ビューの作成に IB を使用し、サンプル コードでは使用しなかったことです。レコグナイザーに到達する前に、何かがスワイプ ジェスチャを消費していると思われます。
私は何を間違っていますか。
ありがとう、
ジョン