检测iPhone X中崩溃的热点

问题描述 投票:0回答:2

我在viewDidLoad中有如下示例代码来检测热点开/关。它在iPhone 6-8中正常工作,但在iPhone X中崩溃了。

 UIApplication *app = [UIApplication sharedApplication];
    if(![[app valueForKey:@"statusBar"] valueForKey:@"doubleHeightLabel"])
    {
       //Some code here
    }
    else
    {
        //Some code here
    }

显示的错误消息: -

因未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[<UIStatusBar_Modern 0x7ffed341b7f0> valueForUndefinedKey:]:此类不是密钥doubleHeightLabel的密钥值编码兼容。

任何的想法?

ios objective-c iphone-x uistatusbar
2个回答
2
投票

有一种方法可以检查CNCopyCurrentNetowrkInfo当前的网络信息。

还有黑客:

OBJ-C:

CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;

迅速:

let statusBarHeight = UIApplication.shared.statusBarFrame.size.height

启用个人热点后,它将返回40,否则返回20。

请注意,它不适用于iPhone X +


0
投票

它崩溃了,因为Apple改变了关键“statusBar”所持有的对象。它不再具有键“doubleHeightLabel”的对象。正如评论中所述,由于这个问题,Apple禁止使用私有API。当他们升级iOS版本时,他们会随意更改“statusBar”对象,因此可能会丢失或更改密钥,甚至可以保存完全不同的变量。

解决方案:不要使用私有API。做个好博爱,听听Apple。

© www.soinside.com 2019 - 2024. All rights reserved.