前言

本文主要给大家介绍了关于iOS12适配及问题的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

版本信息

Xcode: Version 10.0 beta (10L176w)
macOS: 10.14 Beta (18A293u)
iOS: 12.0(16A5288q)

问题及解决过程

1,StatusBar内部结构改变

现象:crash
crash log:
1,-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x283452820
2,Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x283452820’

———————————————————————————————

问题代码和解决方法

  • (NSString )getIphoneXNetWorkStates {
    UIApplication
    app = [UIApplication sharedApplication];
    id statusBar = [[app valueForKeyPath:@”statusBar”] valueForKeyPath:@”statusBar”];
    id one = [statusBar valueForKeyPath:@”regions”];
    id two = [one valueForKeyPath:@”trailing”];
    NSArray three = [two valueForKeyPath:@”displayItems”];
    NSString
    state = @”无网络”;
    for (UIView view in three) {
    //alert: iOS12.0 情况下identifier的变成了类”_UIStatusBarIdentifier”而不是NSString,所以会在调用“isEqualToString”方法时发生crash,
    //修改前
    // NSString
    identifier = [view valueForKeyPath:@”identifier”];
    //修改后
    NSString *identifier = [[view valueForKeyPath:@”identifier”] description];
    if ([identifier isEqualToString:@”_UIStatusBarWifiItem.signalStrengthDisplayIdentifier”]) {
    id item = [view valueForKeyPath:@”_item”];

    //alert: 这个问题和上边一样itemId是_UIStatusBarIdentifier 类型,不是string
    NSString *itemId = [[item valueForKeyPath:@”identifier”] description];
    if ([itemId isEqualToString:@”_UIStatusBarWifiItem”]) {
    state = @”WIFI”;
    }
    state = @”不确定”;

    } else if ([identifier isEqualToString:@”_UIStatusBarCellularItem.typeDisplayIdentifier”]) {
    UIView *statusBarStringView = [view valueForKeyPath:@”_view”];
    // 4G/3G/E
    state = [statusBarStringView valueForKeyPath:@”text”];
    }

    }
    return state;
    }

更多相关文章

  1. Android(安卓)Studio通过修改图标资源值实现图标的修改以及修改A
  2. Android(安卓)开机图片/文字/动画的修改
  3. Android(安卓)4.4 在启动到 ANDROID 闪光字的时候图像错乱的解决
  4. Android(安卓)Camera拍照常见问题小结
  5. Android(安卓)CheckBox中设置padding无效问题解决方法
  6. Android(安卓)Location的使用
  7. android 百度地图的经度纬度问题
  8. Android(安卓)屏幕分辩率相关问题
  9. Android(安卓)解决65535的限制 使用android-support-multidex解

随机推荐

  1. 在activity中调用Application 出现androi
  2. Android——编译release版签名系统
  3. Android开发书籍和教程
  4. android模拟器介绍和基本使用
  5. 使用GDB调试Android(安卓)Native Lib
  6. 开发环境搭建
  7. Android——Toast重复显示解决方法
  8. android 获取屏幕分辨率
  9. Ubuntu eclipse下android virtual device
  10. Android应用程序上传错误The package nam