сбой только на бета2 и бета 3, когда код вызова такой:
[application valueForKeyPath:@"statusBar"]
некоторые могут мне помочь?я вызываю этот метод, чтобы узнать состояние сети телефона.весь код, подобный следующему:
if (![self isIPhoneX]) {
if ([[application valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
children = [[[[application valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
} else {
children = [[[application valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
}
Class expectClass = NSClassFromString(@"UIStatusBarDataNetworkItemView");
for (id child in children) {
if ([child isKindOfClass:expectClass]) {
int netType = [[child valueForKeyPath:@"dataNetworkType"] intValue];
switch (netType) {
case 0: state = @"";break;
case 1: state = @"2g";break;
case 2: state = @"3g";break;
case 3: state = @"4g";break;
case 5: state = @"wifi";break;
default: state = @"";break;
} /* switch */
}
}
} else {
id statusBar = [application valueForKeyPath:@"statusBar"];
id statusBarView = [statusBar valueForKeyPath:@"statusBar"];
UIView *foregroundView = [statusBarView valueForKeyPath:@"foregroundView"];
children = [[foregroundView subviews][2] subviews];
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarWifiSignalView")]) {
state = @"wifi";
}else if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarStringView")]) {
NSString *str = [child valueForKeyPath:@"_originalText"];
if ([str isEqualToString:@"4G"]) {
state = @"4g";
}else if([str isEqualToString:@"3G"]){
state = @"3g";
} else{
state = @"2g";
}
}
}
}
Я устанавливаю открытую бета-версию iOS 13, и все работает хорошо, кроме ярлыков, показывающих ..., но я получаю сбой, когда онлайн бета2 и бета3 версии.