溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS 12適配以及問題小記

發(fā)布時(shí)間:2020-08-25 21:24:53 來源:腳本之家 閱讀:151 作者:Jsen_Wang 欄目:移動(dòng)開發(fā)

前言

本文主要給大家介紹了關(guān)于iOS12適配及問題的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧

版本信息

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

問題及解決過程

1,StatusBar內(nèi)部結(jié)構(gòu)改變

現(xiàn)象: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 = @"無網(wǎng)絡(luò)";
 for (UIView *view in three) {
  //alert: iOS12.0 情況下identifier的變成了類"_UIStatusBarIdentifier"而不是NSString,所以會(huì)在調(diào)用“isEqualToString”方法時(shí)發(fā)生crash,
  //修改前
//  NSString *identifier = [view valueForKeyPath:@"identifier"];
  //修改后
  NSString *identifier = [[view valueForKeyPath:@"identifier"] description];
  if ([identifier isEqualToString:@"_UIStatusBarWifiItem.signalStrengthDisplayIdentifier"]) {
   id item = [view valueForKeyPath:@"_item"];

   //alert: 這個(gè)問題和上邊一樣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;
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI