最近开发,碰到的问题,用户用的不是iOS自带的系统输入法而是类似搜狗输入法这种三方输入法时,当点击应用内任意输入框时,应用会直接crash掉;具体报错信息如下:
Assertion failure in -[UICGColor encodeWithCoder:]
崩溃信息:
大致意思是说”这种情形下只能支持三原色和白色空间形式”;
出现错误原因是在项目中使用了以下代码:
UINavigationBar *bar = [UINavigationBar appearance];
[bar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20], NSForegroundColorAttributeName:[UIColor redColor]}];
// [bar setBackgroundImage:[UIImage imageNamed:@"topbg"] forBarMetrics:UIBarMetricsDefault];
bar.translucent = NO;
bar.barTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"topbg"]];
解决方案:
将设置UINavigationBar的barTintColor颜色的代码写到每个控制器中就可以解决问题。
鉴于iOS系统一般都是系统键盘用的多,可能你会忽视三方键盘这类问题,但是由于苹果公司在系统键盘设计时对中国用户的输入习惯关心的极少,所以系统键盘有时可能无法满足许多用户的需求,因此,类似qq,百度,搜狗的输入法应用的出现迎合了用户的定制输入需求,并且覆盖面也越来越广,所以在iOS开发中对三方输入法的考虑是非常必要的.
要知道之前iOS对这类三方输入法是拒绝的,鉴于其”安全”(封闭)的系统设计,三方输入法也是由于用户的需求才得以出现在iOS的应用中,因此可见被需求是多么重要的事情。
特在此记录一下,方便在以后开发中不会出现同样的错误。