通过使用第三方输入法替换系统原生输入法,用户可以实现一些特殊的功能。比如一个特别新颖的输入方式,或输入iOS原生输入法并不支持的语言。第三方输入法的基本功能很简单:通过点击、手势,或者其他输入事件,然后通过一个未分类的 NSString对象在当前文本输入对象的插入点插入文字。
卷首语
请先确保您开发的第三方输入法真的要用于整个系统。若您只打算为您的应用程序提供一个完全定制的输入法或者只打算给系统输入法添加新的定制按键,那么iOS SDK为您提供了更好的方法。详情见Text Programming Guide for iOS中的Custom Views for Data Input关于自定义输入视图和输入辅助视图的介绍。
当用户选择了某个输入法后,它将对用户打开的所有应用程序开放。因此,开发者创建的输入法至少包含了基本的输入功能,更重要的是,输入法必须允许用户切换到另一个输入法。
了解用户对输入法的期望
为了了解用户对您开发的第三方输入法的期望,请先向系统输入法学习:速度很快、反应灵敏并且能实现用户想要的功能。系统输入法永远不会中断用户的信息和请求。如果您提供需要用户与输入法程序交互的功能,请将这些功能添加到容纳这个输入法扩展的应用程序中。
iOS用户期望的输入法功能
允许用户切换到另一个输入法是iOS用户期望并且是所有第三方输入法必须提供的功能。在系统输入法中,这个功能由一个被称为Global Key的地球按钮提供。iOS8提供专门的API给第三方输入法设置"切换"功能,请参阅:Providing a Way to Switch to Another Keyboard
系统输入法提供了一个基于现有文本输入对象的UIKeyboardType特性,来对相应的输入法按键集或布局做出改变的方法。比如说在输入电子邮件地址时,系统输入法上的句号键也会有相应的变化:只要长按该键,就能够选择一系列顶级域名后缀。记住用这些特性来设计您的第三方输入法。
使用区分大小写语言的iOS用户同样也期望输入法在一个句子中实现首字母自动大写。
以下是iOS用户期待的功能:
1.基于输入法输入特性的适当功能和布局
2.自动校正和建议
3.自动首字母大写
4.双击空格键自动添加句号
5.支持大写锁定
6.键帽插图
7.对于表意语言实现并行输入(例如中文)
您可以自行决定是否要实现以上的功能,但是需要注意的是,没有专门的API来实现上述的任何一个功能,所以如果您能够实现这些功能对您的输入法来说将是一个竞争优势。
自定义键盘不能实现的功能
您的自定义键盘不能访问在设置中的大部分通用键盘设置(设置->通用->键盘),比如说自动首字母大写和启动大写字母锁定键。同样, 您的第三方输入法也不能访问字典重设功能(设置->通用->还原->还原键盘字典)。为了让用户使用这些功能,请创建一个标准设置选 项,详情请见 Preferences and Settings Programming Guide中的Implementing an iOS Settings Bundle。您的第三方输入法设置将会出现在设置选项中的键盘选项区域内,并与您的第三方输入法相关联。
您的第三方输入法没有权限在某些文本输入对象当中输入。首先是所有安全文本输入对象,比如将secureTextEntry属性设为YES的输入框,这种输入框中显示的内容是一个个的点●●●●●●●。
当用户在安全文本输入对象中输入内容,iOS系统将暂时强行调用系统默认输入法,以保证用户的信息安全。当用户在其他非安全文本输入对象中输入时,您的第三方输入法将被重新调用。
您的第三方输入法也没有资格在电话号码对象中输入(就像联系人应用中的号码字段)。这些输入对象是专门为电信运营商所指定的一个小的数字字符集而建立的字符串对象,可以通过其是否具有下面任意一个输入法类型来识别。
当用户在电话号码对象中输入时,系统将暂时强行用相应的标准系统输入法来替换。而当用户在其他的输入对象中输入并需要一个标准输入法适配其类型特点的时候,您的第三方输入法将会自动恢复。
程序开发者可以选择禁止所有的第三方输入法在他们的应用中运行。比如一个银行应用程序的开发者或者一个必须遵循HIPAA隐私规则的应用程序开发者将可能会这样做。这些应用程序使用定义在UIApplicationDelegate协议中的application:shouldAllowExtensi