背景:
生產上爆出一個問題,iOS14用戶某個跳轉按鈕沒有反應。其他系統用戶沒有這個問題。
蘋果在9月17號正式推送了iOS14.
2020,9月17號我們的APP升級OK 。用戶未沒有抱怨出問題。
在23號的時候,還未爆出問題。24號,已經有人反饋了。
我還沒有升級MAC系統,也沒有Xcode12的測試包,也沒有iOS14的測試機。
一切又要從裝系統,裝Xcode開始。Xcode Version 12.2 beta (12B5018i)裝下來整整28.6G,我的學習資料都沒得空間了。XCode11 才 16.2G。
我想說:“#&%¥……#”希望正式版會壓縮體積。
1、整好之后在看頁面的層次結構時模擬器先報錯了:
運行模擬器報"Remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated"
解決方案:
在終端運行 xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
2、開始解決按鈕無效的問題。打印日志:確定跳轉前后的問題
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"viewWillAppear");
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"viewDidAppear");
}
控制台只打印了:
viewWillAppear
看來按鈕是生效了,肯定是B控制器的viewDidLoad出了問題。
由於線上大部分機型和系統沒有問題,只有一行行排除。
不停的調試之后。
定位到是純代碼布局:
[self.inputView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(oneThirdScreenWidth - 15);
make.height.mas_equalTo(25);
make.width.mas_equalTo(2 * oneThirdScreenWidth - 45);
// make.centerY.baseline.equalTo(self);
make.centerY.equalTo(self);
}];
被注釋掉的代碼出了問題,看來iOS14蘋果對自動布局又做了【優化】,centerY和baseline不能同時設置約束,Masonry也沒有爆約束沖突的斷言。iOS14之前,也沒有錯誤。
最后想想而且之前這樣做也像是多余的約束,實際上這兩個約束用一個就好,里面的textFiled的位置不合適可以再做偏移設置。
順利解決。