2

アプリケーションにスワイプジェスチャレコグナイザーを追加しています

- (void)createGestureRecognizers
{

    //adding swipe up gesture
    UISwipeGestureRecognizer *swipeUpGesture= [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUpGesture:)];
    [swipeUpGesture setDirection:UISwipeGestureRecognizerDirectionUp];
    [self.view addGestureRecognizer:swipeUpGesture];
    [swipeUpGesture release];
}

そして、スワイプイベントを処理する方法:

-(IBAction)handleSwipeUpGesture:(UISwipeGestureRecognizer *)sender
{
    NSLog(@"handleSwipeUpGesture: called");
}

ここでオフセットを計算するにはどうすればよいですか?ビューを移動するには?

4

2 に答える 2

8

UISwipeGestureRecognizerは、個別のスワイプジェスチャを検出するためのものであり、スワイプが完了した後に1回だけアクションを実行します。したがって、指が移動したオフセットまたは距離について質問する場合は、UIGestureRecognizerのサブクラスを作成するか、 UIPanGestureRecognizerを使用して、継続的なジェスチャ情報を取得します。何をしようとしているのか正確にはわかりませんが、UIScrollViewも適切である可能性があります...

ジェスチャレコグナイザーについては、アップルのドキュメントをご覧ください。

于 2011-12-01T13:35:11.683 に答える
8

UISwipeGestureRecognizerのUIGestureRecognizer抽象スーパークラスには、次のメソッドがあります

- (CGPoint)locationInView:(UIView *)view
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view

これにより、ビュー内のジェスチャの位置を知ることができますが、これは個別のジェスチャレコグナイザーです(これは、指定した「変換」または「オフセット」で起動し、制御できません)。継続的な制御を探しているようです。このためには、次のメソッド(変換計算を行う)を持つUIPanGestureRecognizerが必要です。

- (CGPoint)translationInView:(UIView *)view
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
- (CGPoint)velocityInView:(UIView *)view

その後、ジェスチャーが継続的に展開されている間、クイックファイアコールバックを取得します。

于 2011-12-01T13:39:51.133 に答える