UITapGestureRecognizer没有做任何事情

时间:2011-06-25 04:51:38

标签: iphone ios uigesturerecognizer

我有一个应用程序显示一个文本页面,可以点击按钮或在视图中滑动以进入或退回各个页面。容器视图附加了两个UISwipeGestureRecognizer,用于向左滑动和向右滑动。这些手势没问题。但现在我正在尝试将UITapGestureRecognizer添加到另一个视图中,提供类似于iBooks或Kindle应用程序的功能,点击左侧返回,右侧继续前进。我所做的一切都无法触发。即使我将手势放在最顶层的视图上并禁用其他手势,也不会暗示它会被触发。

视图控制器实现了UIGestureRecognizerDelegate,尽管我不需要实现委托方法。我确实尝试过实现shouldReceiveTouch:没有成功。

以下是我创建并附加手势识别器的代码片段:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
[recognizer release];

3 个答案:

答案 0 :(得分:25)

在您添加手势识别器的视图上尝试此操作:

view.userInteractionEnabled = YES;

答案 1 :(得分:7)

你提到你已经尝试过这个,但以防再次通过它。

尝试在标题中使用<UIGestureRecognizerDelegate>的委托,然后设置委托:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];

然后实现这个方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {
    return YES;
}

然后使用调试器或将NSLog投入上述方法,并使用tapGestureTurnPage:查看是否正在调用这些方法。

答案 2 :(得分:3)

在初始化手势的地方添加:

recognizer.delegate = self;

并在“自我”类中添加:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

这允许我在UIWebView上识别手势,UIWebView仍然会响应点击。 (我想要的 - 你可能不会)