【发布时间】:2019-08-01 00:31:00
【问题描述】:
我正在尝试找出在UIView 中的给定CGPoint 处找到确切子视图(如果有)的最佳方法。
我的场景/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 中放置了太多控制逻辑.
谢谢。
【问题讨论】:
标签: ios swift uiview uigesturerecognizer uitapgesturerecognizer