1

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

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

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

UILabel 尤其难以成功命中。

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

4

1 回答 1

2

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

CGPoint touchPoint = [(UITapGestureRecognizer*)sender locationInView:self.view];
UIView* touchedView = [self.view hitTest:touchPoint withEvent:nil];
于 2012-04-13T05:52:28.657 回答