我正在尝试找出在CGPoint
中给定的UIView
上查找确切子视图(如果有)的最佳方法。
我的scene / ViewController的一部分是一个自定义UIView
子类(在XIB中设计),它提供UIStackView
子视图(也是自定义,XIB设计)。
该VC在该自定义视图上有一个UITapGestureRecognizer
,在我的@IBAction
中,我想确定其子视图中哪个特定的子视图已被轻按,然后相应地进行处理:
@IBAction func handleTap(recognizer:UITapGestureRecognizer) {
let tapLocation = recognizer.location(in: recognizer.view)
if let subviewTapped = customView.subviewAtLocation(tapLocation) {
handleTapForSubview(subviewTapped)
}
}
但是,我不知道如何实现该subviewAtLocation(CGPoint)
方法。我无法在标准的UIView方法中找到任何内容。
欢迎提出建议。
或者,我考虑将抽头识别器添加到每个子视图中,然后委派给父级,然后委派给VC,但这感觉效率很低,就像在视图中添加了过多的控制逻辑,而不是VC
谢谢。
答案 0 :(得分:0)
//使用hitTest()方法。这给出了包含该点的视图
let subView = parentView.hitTest(point, with: nil)