【发布时间】:2017-09-21 18:05:33
【问题描述】:
是否还有其他人遇到applicationDidBecomeActive 在新 iPhone X 上的应用停用时错误触发的问题?
这是我的测试应用:
class ViewController: UIViewController {
required init?(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
NotificationCenter.default.addObserver(
self,
selector: #selector(fired),
name: .UIApplicationDidBecomeActive,
object: nil
)
}
@objc func fired(_:Any) {
print("fired")
}
}
在 iPhone X 模拟器上运行应用程序。自然,我在控制台中看到“解雇”。到现在为止还挺好。现在向侧面或向上滑动主页指示器,以切换到不同的应用程序或调出应用程序切换器。我看到控制台中再次出现“fired”!
这似乎是错误的,并且将我所有的应用程序都扔进了混乱中。我该如何应对在停用时收到激活通知?
【问题讨论】:
-
似乎有 3 个通知被快速连续触发:willResignActive / didBecomeActive / willResignActive。
-
快速测试 - 如果您在 ipad pro 上进行此测试并尝试切换应用程序会发生什么?
-
@solenoid 不是 iPad 应用程序。任何其他 iPhone 都没有问题,只有 iPhone X。
-
@MartinR 所以理论上我们可以通过一些疯狂的定时/去抖动机制来解决这个问题。
-
为什么它会混淆你的应用程序?它的行为就像应用程序被停用,然后又被激活和停用 - 这是可能发生的事情。