首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让UIDeviceOrientation在第一次解锁时自动变为纵向?

如何让UIDeviceOrientation在第一次解锁时自动变为纵向?
EN

Stack Overflow用户
提问于 2019-06-26 07:56:01
回答 1查看 3.1K关注 0票数 1

我目前正在制作一款游戏,如果你先拿起你的手机,那么你就输了。因此,我有一个方向观察者,它可以检查电话何时被拿起(纵向)。然而,每当我锁定手机然后解锁时,即使手机正面朝上,方位观察者也会自动认为手机处于纵向模式。

我试着删除观察者,并在解锁手机几秒钟后将其添加回来。

代码语言:javascript
复制
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)
                }
            }
EN

回答 1

Stack Overflow用户

发布于 2019-06-26 08:28:33

问题是UIDeviceOrientation没有告诉你你需要知道的东西。您想要使用Core Motion,它使用重力来告诉您设备在空间中的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56763444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档