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 的 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 回答
8

UISwipeGestureRecognizer 用于检测离散的滑动手势——它只会在滑动完成后触发一次你的动作——所以如果你询问手指移动的偏移量或距离,你可能想看看创建 UIGestureRecognizer 的子类或使用UIPanGestureRecognizer 获取连续的手势信息。不确定您到底要做什么,但 UIScrollView 也可能是有序的......

查看苹果文档以了解手势识别器

于 2011-12-01T13:35:11.683 回答