Unity3D技术之Android 脚本手机键盘开发详解
手机键盘
在大多数情况下,Unity 会自动处理 GUI 元素的键盘输入。不过,在脚本中按照需求显示键盘也并不复杂。
iOS 平台
使用键盘
- GUI 元素:当用户轻触可编辑的 GUI 元素时,键盘会自动弹出。目前,
GUI.TextField、GUI.TextArea和GUI.PasswordField这些元素在被轻触时会显示键盘。 - 手动键盘处理:可以使用
iPhoneKeyboard.Open函数来手动打开键盘。
键盘类型概要
键盘支持以下几种类型:
iPhoneKeyboardType.Default:字母键盘,可切换至数字和符号键盘。iPhoneKeyboardType.ASCIICapable:同样是字母键盘,也能切换至数字和符号键盘。iPhoneKeyboardType.NumbersAndPunctuation:数字和符号键盘,可切换至字母键盘。iPhoneKeyboardType.URL:带有退格键和.com键的字母键盘,可切换至数字和符号键盘。iPhoneKeyboardType.NumberPad:仅包含 0 - 9 的数字键盘。iPhoneKeyboardType.PhonePad:用于电话号码输入的键盘。iPhoneKeyboardType.NamePhonePad:字母键盘,可切换至电话号码键盘。iPhoneKeyboardType.EmailAddress:带有@符号的字母键盘,可切换至数字和符号键盘。
文本预览
默认情况下,键盘弹出后,编辑框会被创建并置于键盘上方,作为用户正在输入文本的预览,这样文本内容始终对用户可见。但可以通过将 iPhoneKeyboard.hideInput 设置为 true 来禁用此功能。需要注意的是,该功能仅适用于某些键盘类型和输入模式,例如不适用于电话键盘和多行文本输入,在这些情况下,编辑框将始终显示。另外,iPhoneKeyboard.hideInput 是全局变量,会影响所有键盘。
可见性和键盘尺寸
在 iPhoneKeyboard 中,有三个键盘属性可用于确定键盘在屏幕上的可见状态和尺寸:
- 可见 (
visible):若键盘在屏幕上完全可见且可用于输入字符,则返回true。 - 区域 (
area):返回键盘的位置和尺寸。 - 激活 (
active):若键盘被激活,则返回true。该属性不是静态属性,必须拥有键盘实例才能使用。
需要注意的是,iPhoneKeyboard.area 在键盘在屏幕上完全可见之前,会返回位置和尺寸均为 0 的矩形,因此不能在调用 iPhoneKeyboard.Open 之后立即查询此值。键盘事件的顺序如下:
- 调用
iPhoneKeyboard.Open后,iPhoneKeyboard.active返回true,iPhoneKeyboard.visible返回false,iPhoneKeyboard.area返回(0, 0, 0, 0)。 - 键盘滑入屏幕,此时所有属性保持不变。
- 键盘停止滑动,
iPhoneKeyboard.active返回true,iPhoneKeyboard.visible返回true,iPhoneKeyboard.area返回键盘的实际位置和尺寸。
安全文本输入
在输入时,可以通过配置键盘来隐藏输入的符号,这在用户需要输入敏感信息(如密码)时非常有用。若要手动打开启用安全文本输入的键盘,可使用以下代码:
iPhoneKeyboard.Open("", iPhoneKeyboardType.Default, false, false, true);
Android 平台
Unity Android 在显示系统键盘方面复用了 iOS API。尽管 Unity Android 支持大部分与 iPhone 对应的功能,但不支持以下两项:
iPhoneKeyboard.hideInputiPhoneKeyboard.area
此外,需要注意的是,iPhoneKeyboardType 的样式在不同设备上可能会有所差异。