Abi*_*ian 5 objective-c uiapplication ios ios11
我已经更新到最新的xcode - 9和iOS 11,现在我在UIApplicationState面临问题.任何人都可以告诉我为什么苹果在ApplicationState中做了这个改变.
例如:在viewController viewWillAppear期间,我正在检查UIApplicationState:
UIApplicationState applicationState = [UIApplication sharedApplication].applicationState;
if (applicationState == UIApplicationStateActive)
{
}
Run Code Online (Sandbox Code Playgroud)
但我得到applicationState = UIApplicationStateInactive.
或者我需要通过额外代码单独处理iOS 11版本:
if (applicationState == UIApplicationStateActive || (@available(iOS 11, *) && applicationState == UIApplicationStateInactive)){
}
Run Code Online (Sandbox Code Playgroud)
在所有版本中保持应用程序状态的任何其他答案?
提前致谢,
**更新答案**
我使用以下代码在 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)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 iOS 10 上运行时:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: true // This differs from 11
viewDidAppear with delay active: true
Run Code Online (Sandbox Code Playgroud)
在 iOS 11 上运行时:
viewDidLoad() active: false
viewWillAppear active: false
viewDidAppear active: false
viewDidAppear with delay active: true
Run Code Online (Sandbox Code Playgroud)
我不能告诉你这是否是故意的,但肯定已经发生了一些变化。也许在上面提交雷达?
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |