我尝试用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触控设备的用户通过手指的角度控制您的游戏:
这是上述示例的代码:
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/