因最近在做输入法的重设,所以对输入法(键盘)进行了一些探究。
输入法作为键盘的类型子集,不同的厂牌会有不同的功能特性,但不论是何种输入法,都会有一些基本的属于键盘控件的设计准则。
从控件的角度来看,键盘作为主要的输入方式,很大程度的影响着用户的写作体验。若是键盘使用不当,则很有可能增加失误率,进而打击用户的积极性。轻则丧失写作欲望,重则放弃对某个应用的注册(不过注册的步骤,往往是决定注册流程体验的第一因素)。
从视觉到交互,从功能实现到类型应用都会影响输入法(键盘)的体验。这一节,从原始的控件角度,分析键盘类型的选择对体验的影响。
之前的一些前辈也分享对类似的经验总结:
崇书庆【交互稿中[键盘类型]的标注】——
http://mp.weixin.qq.com/s/ii7iTwT7B-SmHkC_7bcUbQ
崇书庆【深度基础 | 交互中的Android键盘详解】
https://mp.weixin.qq.com/s?__biz=MzAwODgyODg5OQ==&mid=2652156877&idx=1&sn=4eb1bcd94632e11b9e194665a80c1b51&mpshare=1&scene=1&srcid=0422kT5aw6oW7aw0QTbDM7ZH#rd
【Android有几种不同的键盘布局?】
https://www.zhihu.com/question/39242957
笔者会结合前者的总结来写。大家可以结合来看。
iOS10中有13种键盘
Specifies the default keyboard
for the current input method.
(默认键盘)
Specifies a keyboard
that displays standard ASCII characters.
(ASCII键盘)
Specifies the numbers
and punctuation keyboard.
(数字、标点键盘)
Specifies a keyboard optimized for URL entry.
This keyboard type prominently features
the period (“.”) and slash (“/”) characters
and the “.com” string.
(URL键盘)
(特设“.”、“/”、“.com”)
Specifies a numeric keypad designed for PIN entry.
This keyboard type prominently features
the numbers 0 through 9.
This keyboard type does not support auto-capitalization.
(PIN键盘)
(包含0-9数字,不支持自动大写)
Specifies a keypad designed for entering telephone numbers.
This keyboard type prominently features the numbers 0 through 9
and the “*” and “#” characters.
This keyboard type does not support auto-capitalization.
(电话数字键盘)
(包含0-9数字及 *、# 键,不支持自动大写)
Specifies a keypad designed for
entering a person’s nameor phone number.
This keyboard type does not support auto-capitalization.
(联系人键盘:用于输入人名和电话)
(包含0-9数字及 *、# 键,不支持自动大写)
(与默认键盘样式一样)
Specifies a keyboard optimized for
entering email addresses.
This keyboard type prominently features
the at (“@”), period (“.”) and space characters.
(邮件键盘)
(包含"@"、“.”、空格键)
Specifies a keyboard with numbers
and a decimal point.
(小数键盘)
(包含小数点)
Specifies a keyboard optimized for
Twitter text entry,
with easy access to the at (“@”)
and hash (“#”) characters.
(Twitter键盘)
(包含@、#键)
Specifies a keyboard optimized for
web search terms and URL entry.
This keyboard type prominently features
the space and period (“.”) characters.
(网页搜索键盘)
(包含空格键、“.”键)
Specifies a number pad that outputs
only ASCII digits.
(ASCII数字键盘)
13.UIKeyboardTypeAlphabet
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
// Deprecated 已废弃
除了有不同的类型,部分键盘还可以定制不同的“按键命令”
Android中的文本框有32种输入类型(input type),系统会根据这个输入类型调取不同的键盘。
有人认为,虽然输入类型有32种,但keyboard type却远大于32种,因为——
input type还可以互相搭配使用,比如 textEmailAddress 可以和 textNoSuggestions 搭配使用,最终调出的键盘是“邮箱键盘”且“不进行词典联想”。如果我们在设计过程中遇到一些比较复杂的键盘交互,则最好根据input type来标注所需要的键盘效果,仅仅使用键盘截图是不够的。
——崇书庆《深度基础 | 交互中的Android键盘详解》
也有人提出,keyboard type并没有32种
比如datetime、date、time可以用专门picker(选择器)去做。textCapWords、textCapWords、textCapSentences大写之类的对键盘布局没有影响,只是键盘的状态而已。
——龙爪槐守望者 @知乎《Android有几种不同的键盘布局?》
综合两者观点,笔者认为Android的键盘可控性较大,明确所有input type属性比数清键盘类型更有实际效益,在此前提下,设计人员可以根据需求自行组合选择键盘特性。
(默认键盘)
(文本)
(电子邮箱)
(URI)
(密码)
(数字符号)
(数字)
(小数点数字)
(电话号码)
与IOS一样,Android的键盘也可以定制不同的“keyboard actions”
如果我们需要指定keyboard action为其中某一种,可以通过imeOptions语句指定,在交互稿上则使用文字标注即可。如果不指定类型,程序会判断当前文本框是否为页面中的最后一项,如果是,则显示“完成(done)”,如果不是,则显示“下一项(next)”。
关于“前往”和“完成”的区别,笔者比较倾向于@江凌的观点:
用“完成”还是“前往”取决于当前文本框的任务时中介点还是终结点。譬如输入网址,用户的任务是访问网站,输入网址是任务的中介而非终结,所以用前往;对于个人信息修改,任务和操作文本框是一致的,完成文本框也是完成了任务本身,是任务的终结点,所以用完成。
但是在H5环境中,“按键命令”的类型大部分可以选择,但“完成”和“下一项”不可以选择。这意味着,当用户填写完一个输入框想要跳转下一个输入框时,只能手动点击。如果用户下意识地点击“前往”按钮,则可能会出现表单警报。
文中若有纰漏,欢迎指正交流
wx:15652131424