如何判断是否是第三方输入法



在应用中我们常常自定义键盘,特别是为数字键盘增加新的功能按钮;现在越来越多的输入法支持iphone,百度。腾讯,搜狐等;
如用户安装了第三方的输入法,我们就需要辨别出来:

在IOS 4.2以上支持 UITextInputMode,可通过 [[UITextInputMode currentInputMode] primaryLanguage] 来获取当前输入法,如果是自定义的这里会显示自定义信息(例如:baidu。。)但是如何更好的识别呢,暂时也没有找到令我满意的方式:

需要知道的:
普通的数字键盘弹出时,打印[[UITextInputMode currentInputMode] primaryLanguage]跟当前语言相关,比如当前语言为en,打印所得是en-US;当前语言是zhhhans,打印所得是zh-hans;若改数字键盘是密码键盘形式,打印所得都是en-US;

暂时可以通过以下方式解决:
1、获取系统设置里当前语言,例如ja(日语),可通过判断primaryLanguage 是否为en-US或者primaryLanguage是否包含前缀ja(注:primaryLanguage 与当前语言并不完全相同);若不满足前两个条件,则应该是第三方输入法;(这种方式也可能会有问题,加入除了一个输入法,名字是japan,谁知道呢??)

2、[UITextInputMode activeInputModes],另外一个规律是,如果是系统输入法获取的这个数组中有包含一个keyboardmode对象,而出现第三方输入法键盘时,包含两个keyboardmode对象,不知道算不算规律,暂时来看也是一种方法吧;


暂时采用的第一种方式,感觉更有依据性一些,如果有更好的方法,欢迎分享

你可能感兴趣的:(输入法)