首页 > 解决方案 > 如何在iOS的整个视图上阻止2个手指手势

问题描述

我目前正在使用 SceneKit 的默认摄像头,我想继续使用单击和单次滑动手势,但我想阻止默认的 2 指缩放、平移和旋转。

有没有办法捕获在视图上执行的所有 2 个触摸手势(我猜是 SceneView 的父视图)并取消它们,而不禁用 1 个触摸手势?

scnView.defaultCameraController的文档缺乏,看起来可以控制滚动等,但不能阻止它的发生。

private func createCamera() {
        scnView.allowsCameraControl = true

        cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        if #available(iOS 11.0, *) {
            scnView.defaultCameraController.maximumVerticalAngle = 30
            scnView.defaultCameraController.minimumVerticalAngle = -30
        }
        cameraNode.position = SCNVector3(x: 0, y: 0, z: 5)
        myScene.rootNode.addChildNode(cameraNode)
    }

标签: iosswiftuigesturerecognizerscenekit

解决方案


此外 - 一旦你建立了自己的相机 - 你可以测试触摸次数 - 不是所有的代码都包括在内,但类似:

func dragBegins(vRecognizer: UIPanGestureRecognizer)
    {
        if(data.gameState == .run)
        {
            if(vRecognizer.numberOfTouches == 2) { dragMode = .strafe }
        }
    }

您可以使用 .began、.changed、.ended 等识别器状态来检查流程并对其进行控制。


推荐阅读