iOS 14首个坑
背景:
生产上爆出一个问题,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的位置不合适可以再做偏移设置。
顺利解决。