UITapGestureRecognizer仅检测在控件的上半部分中轻敲的控件

时间:2012-04-13 05:44:18

标签: ios hittest uitapgesturerecognizer

我正在尝试在我的iOS应用上实现一种“帮助模式”。当用户点击帮助按钮时,UITapGestureRecognizer会拦截触摸屏幕,如果它在控件上,则会显示一个带有帮助信息的小弹出窗口。

我的问题是,如果我点击控件的上半部分,应用程序只检测到我已经点击了控件。我使用hitTest:withEvent:来确定触摸了哪个视图:

CGPoint touchPoint = [(UITapGestureRecognizer*)sender locationInView:nil];
UIView* touchedView = [self.view hitTest:touchPoint withEvent:nil];

UILabels特别难以成功击中。

View包含顶部的导航栏,但相当标准。有没有人有类似的问题?有谁知道解决方案?

1 个答案:

答案 0 :(得分:2)

您需要在视图中获取触摸的位置,而不是在窗口中(这是您将nil指定为视图时获得的位置)。

CGPoint touchPoint = [(UITapGestureRecognizer*)sender locationInView:self.view];
UIView* touchedView = [self.view hitTest:touchPoint withEvent:nil];