Unity3D技术之Android 脚本手机键盘开发详解

2015年03月25日 14:46 0 点赞 0 评论 更新于 2017-05-08 18:14

手机键盘

在大多数情况下,Unity 会自动处理 GUI 元素的键盘输入。不过,在脚本中按照需求显示键盘也并不复杂。

iOS 平台

使用键盘

  • GUI 元素:当用户轻触可编辑的 GUI 元素时,键盘会自动弹出。目前,GUI.TextFieldGUI.TextAreaGUI.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 之后立即查询此值。键盘事件的顺序如下:

  1. 调用 iPhoneKeyboard.Open 后,iPhoneKeyboard.active 返回 trueiPhoneKeyboard.visible 返回 falseiPhoneKeyboard.area 返回 (0, 0, 0, 0)
  2. 键盘滑入屏幕,此时所有属性保持不变。
  3. 键盘停止滑动,iPhoneKeyboard.active 返回 trueiPhoneKeyboard.visible 返回 trueiPhoneKeyboard.area 返回键盘的实际位置和尺寸。

安全文本输入

在输入时,可以通过配置键盘来隐藏输入的符号,这在用户需要输入敏感信息(如密码)时非常有用。若要手动打开启用安全文本输入的键盘,可使用以下代码:

iPhoneKeyboard.Open("", iPhoneKeyboardType.Default, false, false, true);

Android 平台

Unity Android 在显示系统键盘方面复用了 iOS API。尽管 Unity Android 支持大部分与 iPhone 对应的功能,但不支持以下两项:

  • iPhoneKeyboard.hideInput
  • iPhoneKeyboard.area

此外,需要注意的是,iPhoneKeyboardType 的样式在不同设备上可能会有所差异。

作者信息

feifeila

feifeila

共发布了 570 篇文章