我正在尝试使用tap来专注于摄像机视图,但是没有调用触摸的覆盖功能。我检查过以确保视图的userInteractionEnabled = true,就是这样。这是我的touchesBegan方法:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
var anyTouch = touches.first as! UITouch
var touchPercent = anyTouch.locationInView(self.view).x / screenWidth
focusTo(Float(touchPercent))
}
我正在尝试与之互动的是视频预览图层,其创建方式如下:
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
if let vpl = videoPreviewLayer {
vpl.videoGravity = AVLayerVideoGravityResizeAspectFill
vpl.frame = view.layer.bounds
vpl.zPosition = -100
view.layer.addSublayer(vpl)
}
预览和自动对焦工作正常,但无论何时我尝试点击屏幕来调用touchesBegan,我什么也得不到。 在与子层进行交互时,是否有任何我完全遗漏的东西?
答案 0 :(得分:0)
我建议尝试两件事:
•删除zPosition(或至少使其成为正面)并查看是否触发了touchesBegan。
•如果这不起作用,请尝试覆盖hitTest:withEvent:并查看是否会触发。
如果这两个选项都不起作用,那么你可能在这个选项的顶部有另一个视图,或者你的主窗口的大小是0,0并且根本没有接收到任何触摸。