Contents
  1. 1. 使用KVC设置UIAlertAction按钮颜色的Crash
  2. 2. fix
  3. 3. 参考

使用KVC设置UIAlertAction按钮颜色的Crash

1
2
3
4
5
6
7
8
=> Start [<UIAlertAction 0x1702b63e0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _titleTextColor.
-> translating『 0x1005eb9a0 』=> -[UsedHouseDetail firstCollectTip] QFangWang/HouseDetail/Controller/UsedHouseDetail.m: line 509
-> translating『 0x1005eb668 』=> __39-[UsedHouseDetail RequestColletionData]_block_invoke.481 QFangWang/HouseDetail/Controller/UsedHouseDetail.m: line 472
-> translating『 0x1007b0cfc 』=> -[YTKNetworkAgent handleRequestResult:] /Users/Fish/iOS-Client/QFangWang/Pods/YTKNetwork/YTKNetwork/YTKNetworkAgent.m: line 262
-> translating『 0x1007b020c 』=> __33-[YTKNetworkAgent ytk_addRequst:]_block_invoke.145 /Users/Fish/iOS-Client/QFangWang/Pods/YTKNetwork/YTKNetwork/YTKNetworkAgent.m: line 156
-> translating『 0x100227524 』=> main QFangWang/main.mm: line 13
=> End [<UIAlertAction 0x1702b63e0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _titleTextColor.
>------------------------------------------------------<

最近线上发现了如上面所示的bug

是为了实现改变 UIAlertAction 默认按钮颜色的地方使用了下面方式

1
[action setValue:[UIColor redColor] forKey:@"_titleTextColor"];

但是在某些系统版本中 UIAlertAction 中并没有 _titleTextColor 这个成员变量而导致了崩溃
具体可以通过 runtime 获取成员列表来看看

fix

判断是否有 _titleTextColor 来设置
或者
通过设置 alertController.view.tintColor 来实现
需要注意的是: 在8.4上由于层级结构的问题 需要在 presentAlertVC 后设置 tintColor

参考

http://www.jianshu.com/p/8a2b5a3a9167

Contents
  1. 1. 使用KVC设置UIAlertAction按钮颜色的Crash
  2. 2. fix
  3. 3. 参考