iPad的3D触控等效性

时间:2018-09-20 20:32:55

标签: ios swift 3dtouch

我已经尝试使用Swift开发游戏,该游戏利用了iPhone的3D触摸硬件。但是,当我将应用提交到App Store时,它被拒绝了,因为游戏无法在iPad上玩

我的问题是,为非3D触摸设备实现类似功能的最佳方法是什么?我现在的操作方式是实现以下方法

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {

    if self.didStartGame, let touch = touches.first {

        let maximumPossibleForce = touch.maximumPossibleForce
        let force = touch.force
        let normalizedForce = min(force/maximumPossibleForce * 2.5, 1)

        // Added game-related code here to modify scene accordingly

    }

}

在非3D触摸设备上运行后者时,调试touch.maximumPossibleForce的值将返回0

1 个答案:

答案 0 :(得分:2)

您无法在不支持此功能的设备上检测到强制触摸。

但是也许您可以在majorRadius上使用UITouch属性。它为您提供触摸的半径。

使用半径,您可以允许没有3d触摸设备的用户使用手指的角度来控制您的游戏:

enter image description here

这是上面示例的代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let pseudoForce = touches.first?.majorRadius else { return }
    label.text = "\(pseudoForce)"
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let pseudoForce = touches.first?.majorRadius else { return }
    label.text = "\(pseudoForce)"
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    label.text = "-"
}