0

UISwipeGestureRecognizer で右スワイプのみを検出しようとしています。「右」に設定しましたが、まだ両方向にスワイプが登録されています。私はオンラインで検索し、Apple が提供するすべての開発ページを読みました。これを成功させる方法がわかりません。

リクエストに応じて:

.h:

IBOutlet UISwipeGestureRecognizer *decade1;
@property (nonatomic, retain) UISwipeGestureRecognizer *decade1;

.m:

@synthesize decade1;

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{
    if((page == 4) && (decade1))
{

        printf("HELLO!!");
    }
}
4

1 に答える 1

2

次のようにジェスチャ認識エンジンを作成し、必要なビューに追加します。

UISwipeGestureRecognizer *rightSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe:)];
[rightSwipeGestureRecognizer setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:rightSwipeGestureRecognizer];

スワイプを処理するメソッドを定義します。

-(void)rightSwipe:(UISwipeGestureRecognizer*)recognizer {

    NSLog(@"Right swipe");

}

それでも機能しない場合は、ビューに認識エンジンを追加しないで、アクティブな別の認識エンジンがあるかどうかを確認してください。

編集(コードを見た後):

scrollViewDidScroll メソッド内にロジックがあるため、あらゆるタイプのスワイプ (実際にはスクロール) に反応します。あなたのジェスチャレコグナイザーがこのタイプのセットアップで機能するかどうかは疑問です.

ジェスチャー認識エンジンをビューに追加する必要があります。次に、ジェスチャーが認識されたときに実行されるメソッドを接続する必要があります。ジェスチャレコグナイザーの方向を右に設定した場合、メソッドは右スワイプ後にのみ呼び出されることに注意してください。クラスがどのように機能するかを完全に理解するために、もう一度クラスを復習します。UIGestureRecognizer クラス リファレンス

UIScrollView を使用しているため、独自の認識機能が配置されているため、スワイプを認識するのは少し難しいです。UIScrollViewでスワイプジェスチャーを認識する方法をご覧ください

また、シンプルに保ち、UISwipeGestureRecognizer をプログラムで追加することもお勧めします (ほとんどの場合、オブジェクトはレコグナイザーの @selector 関数に返されるため、インスタンス変数を宣言する必要さえありません。

于 2012-07-21T04:07:49.027 に答える