如何快速知道点击是在视图内还是在视图外
Posted
技术标签:
【中文标题】如何快速知道点击是在视图内还是在视图外【英文标题】:How to know that whether a tap is inside a view or outside in swift 【发布时间】:2017-01-16 10:48:27 【问题描述】:我正在尝试开发代码部分,以检查我的水龙头是在视图内还是在视图外,我尝试使用 pointInside 方法。如果 A 是主视图控制器,B 是 A 的子视图,我怎样才能知道用户在 B 中点击了。
【问题讨论】:
【参考方案1】:Apple 在Responder Chain 中很好地解释了这一点。您可以将以下功能添加到您的视图控制器:
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)
if let firstTouch = touches.first
let hitView = self.view.hitTest(firstTouch.location(in: self.view), with: event)
if hitView === viewB
print("touch is inside")
else
print("touch is outside")
【讨论】:
调用中的参数“with”缺少参数。我没听懂。 我们需要设置一些委托吗?因为它没有被解雇。 if hitView != viewB print("is outside the view") 也许会对某人有所帮助)【参考方案2】:在tapGestureRecognizer
回调中,您可以使用tapGesture.location(in: A)
方法来获取A 推荐系统的x、y 位置。然后你可以使用B.frame.contains(location)
。
如果为真,则水龙头在 B 中。
根据您要执行的操作,可以使用更简单的方法来解决问题。例如,如果您只对 B 内部的触摸感兴趣,可以将 gestureRecognizer
添加到 B 而不是 A。
我不知道哪些正是您的需求。有了更多信息,我可以给你更好的建议。
【讨论】:
如果用这个方法使用:convertPoint: fromView: 真的很有用。以上是关于如何快速知道点击是在视图内还是在视图外的主要内容,如果未能解决你的问题,请参考以下文章