8

我使用以下代码在我的代码中处理 1 次手指滑动:

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [swipe setDirection:UISwipeGestureRecognizerDirectionLeft];
    [swipe setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:swipe];

我知道我可以添加以下行以使其处理 2 个手指滑动:

 [swipe setNumberOfTouchesRequired:2];

但是,当我添加上述代码时,不再检测到 1 次手指滑动,因为现在所需的触摸次数为 2。我该怎么做才能使我的代码适用于 1、2 或 3 次手指滑动?

我尝试使用以下代码,但这并没有做我想做的事情。

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:3];
    [panRecognizer setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:panRecognizer];
    [panRecognizer release];

谢谢你。

4

2 回答 2

12

在您的 handleViewsSwipe 中,您可以从手势识别器获取 numberOfTouches 属性。

- (void)handleViewsSwipe:(UISwipeGestureRecognizer *)recognizer {
    NSUInteger touches = recognizer.numberOfTouches;
    switch (touches) {
        case 1:
            break;
        case 2:
            break;
        case 3:
            break;
        default:
            break;
    }
}

只需根据您获得的触摸次数切换相同的方法即可。

于 2012-01-29T05:22:31.657 回答
10

将三个滑动手势识别器添加到您的视图中:

for (int i = 1; i <= 3; ++i) {
    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    swipe.numberOfTouchesRequired = i;
    swipe.direction = UISwipeGestureRecognizerDirectionLeft;
    swipe.delaysTouchesBegan = YES;
    [self.view addGestureRecognizer:swipe];
}

为我工作。

于 2012-01-29T06:46:11.087 回答