为什么在 iOS 11 中,我的 UIApplicationState 显示为非活动状态而不是活动状态?
Why in iOS 11, my UIApplicationState show as inactive state instead of active?
我已经更新到最新的 xcode - 9 和 iOS 11,现在我在 UIApplicationState 中遇到问题。谁能告诉我为什么苹果在 ApplicationState 中做了这个改变。
例如:
在 viewController viewWillAppear 期间,我正在检查 UIApplicationState:
UIApplicationState applicationState = [UIApplication sharedApplication].applicationState;
if (applicationState == UIApplicationStateActive)
{
}
但是我得到了 applicationState = UIApplicationStateInactive。
或者 iOS11 版本需要额外代码单独处理:
if (applicationState == UIApplicationStateActive || (@available(iOS 11, *) && applicationState == UIApplicationStateInactive)){
}
关于在所有版本中保持应用程序状态一致的任何其他答案?
提前致谢,
** 更新的答案 **
我使用以下代码在 iOS 10 和 iOS 11 设备上测试状态。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
print("\(#function) with delay active: \(UIApplication.shared.applicationState == .active)")
}
}
}
当 运行 在 iOS 10:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: true // This differs from 11
viewDidAppear with delay active: true
当 运行 在 iOS 11:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: false
viewDidAppear with delay active: true
我不能告诉你这是有意还是无意,但肯定有些事情发生了变化。也许对其进行雷达检查?
我已经更新到最新的 xcode - 9 和 iOS 11,现在我在 UIApplicationState 中遇到问题。谁能告诉我为什么苹果在 ApplicationState 中做了这个改变。
例如: 在 viewController viewWillAppear 期间,我正在检查 UIApplicationState:
UIApplicationState applicationState = [UIApplication sharedApplication].applicationState;
if (applicationState == UIApplicationStateActive)
{
}
但是我得到了 applicationState = UIApplicationStateInactive。
或者 iOS11 版本需要额外代码单独处理:
if (applicationState == UIApplicationStateActive || (@available(iOS 11, *) && applicationState == UIApplicationStateInactive)){
}
关于在所有版本中保持应用程序状态一致的任何其他答案?
提前致谢,
** 更新的答案 **
我使用以下代码在 iOS 10 和 iOS 11 设备上测试状态。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("\(#function) active: \(UIApplication.shared.applicationState == .active)")
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
print("\(#function) with delay active: \(UIApplication.shared.applicationState == .active)")
}
}
}
当 运行 在 iOS 10:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: true // This differs from 11
viewDidAppear with delay active: true
当 运行 在 iOS 11:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: false
viewDidAppear with delay active: true
我不能告诉你这是有意还是无意,但肯定有些事情发生了变化。也许对其进行雷达检查?