1

上下にスワイプすると、単純なジェスチャーを使用していくつかのメソッドが起動する大きなボタンがあります。それを 1 回タップすると、 でTouchUpInsideイベントが発生しlargestButtonSingleTapます。私の問題は、大きなボタンをタップして押したままにすると、2 番目に上にスワイプした後、スワイプ ジェスチャが機能しないことです。理由を理解しようとしています。そのボタンには、 DragInside 、 TouchDown 、 DragExit 、 TouchCancel などの他のいくつかのイベントがあります。私はそれらすべてをキャンセルし、空のメソッドのままにしました (largebuttonSingleTap 内のすべてをコメントアウトしました) が、それでも、ボタンが押された場合 > 少し一時停止 > swipeUp > 起動しません。ありがとう

UISwipeGestureRecognizer *upRecognizer;
upRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUp:)];
[upRecognizer setDirection: UISwipeGestureRecognizerDirectionUp];
[_largestButton addGestureRecognizer:upRecognizer];

    - (IBAction)largestButtonSingleTap:(UIButton *)sender
    { //some more code here

        [UIView animateWithDuration:0.4 animations:^() {
    ...
        }completion:^(BOOL finished){}];
    ...

}

-

編集: ここで提案された回答を読んだ後、コードに何か問題があると考えて新しいプロジェクトを開始しましたが、それでも機能しません。ここに新しいプロジェクトがあります http://pastebin.com/yz7NaqUD

4

3 に答える 3

2

UISwipeGestureRecognizer は Discrete Gestures であるため、それを行うことはできません。

https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html

タッチダウンは、パン、ピンチ、回転などの他の連続ジェスチャーと併用できます。

UIButton をサブクラス化し、touchesMove を実装する別の方法を試してください。

参照: iOS カスタム ジェスチャ レコグナイザーが長押しの長さを測定

于 2013-03-05T19:14:32.950 に答える
0

デリゲートをジェスチャレコグナイザーに設定して、以下を実装してみてください。

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    return YES;
}
于 2013-03-05T18:42:00.890 に答える
0

アニメーション ブロックがユーザーの操作をブロックしている可能性があります。largeButtonSingleTap: メソッドで allowUserInteraction アニメーション オプションを使用してみてください。

[UIView animateWithDuration:0.4 delay:0.0f options:UIViewAnimationOptionAllowUserInteraction animations:^{
    //
} completion:^(BOOL finished) {
    //
}];
于 2013-03-05T18:28:00.383 に答える