touchesBegan方法没有从VideoPreviewLayer调用

时间:2015-08-20 17:12:34

标签: ios xcode swift

我正在尝试使用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,我什么也得不到。 在与子层进行交互时,是否有任何我完全遗漏的东西?

1 个答案:

答案 0 :(得分:0)

我建议尝试两件事:

•删除zPosition(或至少使其成为正面)并查看是否触发了touchesBegan。

•如果这不起作用,请尝试覆盖hitTest:withEvent:并查看是否会触发。

如果这两个选项都不起作用,那么你可能在这个选项的顶部有另一个视图,或者你的主窗口的大小是0,0并且根本没有接收到任何触摸。