【问题标题】:How to block 2 finger gestures on an entire view on iOS如何在iOS的整个视图上阻止2个手指手势
【发布时间】:2020-07-21 01:50:05
【问题描述】:

我目前正在使用 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)
    }

【问题讨论】:

  • 我不确定您是否可以解决这个问题,但 IMO 只需创建一个相机类并从那里开始工作就容易多了。帖子:57586437 应该有帮助。

标签: ios swift uigesturerecognizer scenekit


【解决方案1】:

此外 - 一旦您构建了自己的相机 - 您可以测试触摸次数 - 并非包含所有代码,但类似:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多