我在viewDidLoad中有下面的示例代码来检测热点打开/关闭。它在iPhone 6-8中正常工作,但在iPhone X中崩溃。
UIApplication *app = [UIApplication sharedApplication];
if(![[app valueForKey:@"statusBar"] valueForKey:@"doubleHeightLabel"])
{
//Some code here
}
else
{
//Some code here
}
错误信息显示:-
终止应用程序,原因是:“ valueForUndefinedKey::该类不符合键doubleHeightLabel的键值编码。”
有什么想法吗?
发布于 2018-09-19 02:34:31
有一种方法可以检查CNCopyCurrentNetowrkInfo的当前网络信息。
还有一些黑客:
Obj-c:
CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
Swift:
let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
如果启用了“个人热点”,则返回40,否则返回20。
--请注意,,这对iPhone X+是行不通的
发布于 2018-09-19 00:18:09
它崩溃是因为苹果改变了键"statusBar“持有的对象。它不再有一个带有"doubleHeightLabel“键的对象。正如评论中所指出的,苹果禁止使用私有API,因为这正是这个问题。当他们升级iOS版本时,他们会随意地更改"statusBar“对象,这样键就可以丢失,或者更改,甚至可以保存一个完全不同的变量。
解决方案:不要使用私有API。做个好孩子,听苹果的话。
https://stackoverflow.com/questions/52377726
复制相似问题