我正在尝试在作为UIScrollView的子图层的CALayers上检测点击手势事件。以下是我设置识别器的方法:
在viewDidLoad中:
self.tapRecognizer = UITapGestureRecognizer(target: self, action: "tapHandler:")
self.tabScroller.addGestureRecognizer(tapRecognizer)
点击处理方法:
func tapHandler(recognizer: UITapGestureRecognizer) {
var touchLocation = recognizer.locationInView(recognizer.view)
if recognizer.state == UIGestureRecognizerState.Ended {
if let touchedLayer: CALayer = self.tabScroller.layer.hitTest(touchLocation) {
println("\(touchedLayer.name)")
}
}
}
我知道tapHandler正在工作,因为它会执行一个放在其中任何位置的基本println("")字符串。
但println("(touchingLayer.name)")不断打印nil,我无法弄清楚为什么它没有识别CALayer上方的水龙头。
使用
将CALayers添加到tabScrollertabScroller.layer.addSublayer(brushB)
我做错了什么?
答案 0 :(得分:0)
您的CALayer和带有水龙头的UIView位于视图层次结构的两个不同层上。事实上,核心动画比视图更低,UIViews由图层组成。因此,您必须使用hitTest或类似功能来确定您正在点击的图层。