我目前正在制作一款游戏,如果你先拿起你的手机,那么你就输了。因此,我有一个方向观察者,它可以检查电话何时被拿起(纵向)。然而,每当我锁定手机然后解锁时,即使手机正面朝上,方位观察者也会自动认为手机处于纵向模式。
我试着删除观察者,并在解锁手机几秒钟后将其添加回来。
NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification, object: nil, queue: OperationQueue.main, using: { note in
let orientation: UIDeviceOrientation = UIDevice.current.orientation
if orientation == .faceUp {
print("yeoo")
} else if orientation == .portrait {
print(1)
if (self.gameMode == "game1") {
if (self.host == Auth.auth().currentUser?.uid) {
self.ref.child("games").child(String(self.randNum ?? 0)).child("hostPickUp").setValue("true")
let alert = UIAlertController(title: "Phone Picked Up", message: "You picked up your phone and must pay the penalty!", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Yes, I Pay", style: UIAlertAction.Style.default, handler: { _ in
self.ref.child("games").child(String(self.randNum ?? 0)).child("recent").setValue(Auth.auth().currentUser?.uid)
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("pickedUpPhone").setValue("true")
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("time").setValue(self.secs)
}))
alert.addAction(UIAlertAction(title: "Call it Even", style: UIAlertAction.Style.default, handler: { _ in
self.ref.child("games").child(String(self.randNum ?? 0)).child("callItEven").setValue("true")
self.ref.child("games").child(String(self.randNum ?? 0)).child("recent").setValue("calliteven")
}))
self.present(alert, animated: true, completion: nil)
} else {
self.ref.child("games").child(String(self.randNum ?? 0)).child("recent").setValue(Auth.auth().currentUser?.uid)
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("pickedUpPhone").setValue("true")
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("time").setValue(self.secs)
}
} else if (self.gameMode == "game2"){
self.timer2.invalidate()
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("pickedUpPhone").setValue("true")
self.ref.child("games").child(String(self.randNum ?? 0)).child("players").child((Auth.auth().currentUser?.uid)!).child("time").setValue(self.secs)
self.ref.child("games").child(String(self.randNum ?? 0)).child("finalTime").setValue(self.secs)
self.ref.child("games").child(String(self.randNum ?? 0)).child("recent").setValue(Auth.auth().currentUser?.uid)
}
}
发布于 2019-06-26 08:28:33
问题是UIDeviceOrientation没有告诉你你需要知道的东西。您想要使用Core Motion,它使用重力来告诉您设备在空间中的方向。
https://stackoverflow.com/questions/56763444
复制相似问题