5

我设置了一个UISwipeGestureRecognizer

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:delegate action:@selector(handleSwipeGesture:)];
swipe.direction = UISwipeGestureRecognizerDirectionUp;
[self addGestureRecognizer:swipe];
[swipe release];

滑动使玩家朝着滑动的方向移动。不过,我需要玩家继续移动,直到进行滑动的手指从屏幕上抬起。我尝试过使用 touchesEnded: 方法,但它要求先进行非滑动触摸。如何获得做出滑动手势的触摸?我怎样才能检测到该触摸何时从屏幕上移开?

4

2 回答 2

6

我知道您已经对这个问题的答案感到满意,但我想我可能会推荐使用 UIPanGestureRecognizer 而不是滑动手势。

使用平移手势识别器,消息被重复发送到选择器,直到用户停止拖动他们的手指,此时选择器被再次调用,传递 a gesture.stateof UIGestureRecognizerStateEnded。例子:

- (void)panGesture:(UIPanGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateEnded) {
        CGPoint translation = [gesture translationInView:self.view];
        //This contains the total translation of the touch from when it 
        //first recognized the gesture until now.
        //
        //e.g (5, -100) would mean the touch dragged to the right 5 points, 
        //and up 100 points.
    }
}
于 2013-04-06T21:04:52.507 回答
1

在查看了苹果的文档后,我发现了 UIGestureRecognizer 的这个属性:

@property(nonatomic) BOOL cancelsTouchesInView

将其设置为NO让接收者的视图处理手势识别器接收的多点触摸序列中的所有触摸。

于 2010-08-07T19:47:58.227 回答