0

以下不起作用 -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,我不明白为什么这会是个问题。

4

1 回答 1

1

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

正如我们发现的那样,您可以通过转到“常规”>“辅助功能”并禁用三指手势来解决此问题。

于 2012-06-28T16:42:32.880 回答