我尝试用swift开发一款游戏,它利用了iphone的3D触摸硬件。然而,当我将我的应用提交到应用商店时,它被拒绝了,因为游戏不能在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

最佳答案

在不支持强制触摸的设备上无法检测到强制触摸。
但也许您可以在majorRadius上使用UITouch属性。它给出了接触的半径。
使用半径,您可以让没有3d触控设备的用户通过手指的角度控制您的游戏:
ios - iPad的3D触控等效性-LMLPHP
这是上述示例的代码:

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 = "-"
}

关于ios - iPad的3D触控等效性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52432884/

10-14 17:55