我在viewDidLoad中具有以下示例代码来检测热点的开/关。可以在iPhone 6-8中正常运行,但在iPhone X中崩溃了。
UIApplication *app = [UIApplication sharedApplication];
if(![[app valueForKey:@"statusBar"] valueForKey:@"doubleHeightLabel"])
{
//Some code here
}
else
{
//Some code here
}
显示的错误消息:-
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[
valueForUndefinedKey:]:此类不符合键doubleHeightLabel的键值编码标准。'
有什么主意吗?
答案 0 :(得分:2)
有一种方法可以检查CNCopyCurrentNetowrkInfo中的当前网络信息。
还有黑客:
Obj-c:
CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
快捷键:
let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
启用个人热点后,它将返回40,否则返回20。
请注意,该功能不适用于iPhone X +
答案 1 :(得分:0)
它崩溃是因为Apple已更改了键“ statusBar”所持有的对象。它不再具有键为“ doubleHeightLabel”的对象。如评论中所述,由于这个问题,Apple禁止使用私有API。在升级iOS版本时,他们会随意更改“ statusBar”对象,因此键可能会丢失,更改或什至保留完全不同的变量。
解决方案:不要使用私有API。做个好家伙,听听苹果的声音。