到目前为止我还没有找到这方面的任何信息,所以如果你能指导或指出我可以解决这个问题的方向,我将不胜感激。
我想知道我们是否可以检测到用户是从哪个 View Controller 退出或退出应用程序(通过主页按钮,甚至可能是打进来的电话等...)。我正在开发一款用户一次问彼此多个问题的游戏,我想确保如果用户查看第一个问题,回答不正确并在回答第二个问题之前退出应用程序,他/她将无法访问第一个在应用重启时再次提问。我希望这样,如果应用程序在此 View Controller 上退出,用户将获得 0 分。
最佳答案
添加这个扩展:
extension UIApplication {
class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let nav = base as? UINavigationController {
return topViewController(base: nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(base: selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(base: presented)
}
return base
}
}
然后从你的 AppDelegates
applicationDidEnterBackground
调用它:
func applicationDidEnterBackground(_ application: UIApplication) {
if let viewController = UIApplication.topViewController() {
print(viewController)
}
}
将打印出:
<TestApp.MenuController: 0x7ff2bb501940>
关于ios - 检测用户退出应用程序的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351579/