我有一个应用程序显示一个文本页面,可以点击按钮或在视图中滑动以进入或退回各个页面。容器视图附加了两个UISwipeGestureRecognizer,用于向左滑动和向右滑动。这些手势没问题。但现在我正在尝试将UITapGestureRecognizer添加到另一个视图中,提供类似于iBooks或Kindle应用程序的功能,点击左侧返回,右侧继续前进。我所做的一切都无法触发。即使我将手势放在最顶层的视图上并禁用其他手势,也不会暗示它会被触发。
视图控制器实现了UIGestureRecognizerDelegate,尽管我不需要实现委托方法。我确实尝试过实现shouldReceiveTouch:没有成功。
以下是我创建并附加手势识别器的代码片段:
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
[recognizer release];
答案 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仍然会响应点击。 (我想要的 - 你可能不会)