最近開發,碰到的問題,用戶用的不是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的應用中,因此可見被需求是多麼重要的事情。
特在此記錄一下,方便在以後開發中不會出現同樣的錯誤。