UISwipeGestureRecognizer适用于触摸1和2但不适用于3

时间:2012-06-28 16:17:27

标签: objective-c ios uiswipegesturerecognizer

以下不起作用 - 永远不会调用handleSwipeUpTriple

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    UISwipeGestureRecognizer *swipeUpTripleRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUpTriple:)];
    swipeUpTripleRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
    swipeUpTripleRecognizer.numberOfTouchesRequired = 3; // triple finger
    // window is in nib
    [self.window addGestureRecognizer:swipeUpTripleRecognizer];
    [swipeUpTripleRecognizer release];
}

- (void) handleSwipeUpTriple:(UISwipeGestureRecognizer *)sender {
    printf("\nhandleSwipUpTrpl called."); // never happens
    if (sender.state == UIGestureRecognizerStateEnded) 
        printf("\n SwipeUpTriple recognized.");
}

}

奇怪的是,如果我将numberOfTouchesRequired更改为1或甚至2,它就可以工作。只有3(或4)个手指似乎超出范围。由于我看到一些关于三指手势的帖子,我不明白为什么会这样。

self.window.multipleTouchEnabled为YES。

出于测试目的,我删除了所有子视图。屏幕上只有self.window。

我仍在使用iOS 4.3,但由于iOS 3.2提供了UISwipeGestureRecognizer,我不明白为什么这应该是一个问题。

1 个答案:

答案 0 :(得分:1)

我知道非iPad设备有时会运行3个手指的系统手势识别器(通常是缩放)。根据您的设置,系统可能已经为自己保留了这个数量的手指。

正如我们发现的那样,你可以通过转到General>来解决这个问题。可访问性和禁用三指手势。