input.md 3.6 KB

input

键盘上推专题@adjust-position

在App平台,input和textarea组件都一个属性adjust-position,默认为true,即软键盘弹出时,默认上推页面以显示出输入框,避免输入框被软键盘遮挡。

软键盘弹出后会挡住输入框,此时启动上推逻辑。默认的上推策略是:

  • 如果输入框在scroll-view里,会优先滚动scroll-view,以保证显示出输入框。
  • 如果没有可滚动区域,会transform上移页面,以保证显示出输入框。

但是默认的上推策略无法适配所有场景,有些场景需要关闭默认上推策略,即把属性adjust-position设为false,然后在输入框的focus或keyboardheightchange事件中获取键盘高度,手动调整界面。

默认上推策略时,如果页面使用了自定义导航栏,常见注意事项是软键盘弹出后可能把自定义导航栏推出可视范围。
此时注意顶部导航栏不能在滚动视图中,且需要使用css固定在顶部,然后下面放一个scroll-view,输入框放在scroll-view中,就不会把自定义导航栏顶飞。
如果这种方式仍然不能满足需求,那么就需要关闭默认的上推策略,手动控制。

在web端平台,输入框上推逻辑是由浏览器自动完成的,属性adjust-position无效。 但iOS safari软键盘弹出时,整个页面会上推而不是挤压,导致pages.json配置的导航栏会上移到屏幕之外。

comfirm-type和inputmode说明

  1. comfirm-type Web平台弹出键盘使用的是浏览器控制的键盘,在Chrome81+、Safari13.7+之前,键盘右下角文字只能设置完成和搜索,从Chrome81+、Safari13.7+起支持设置发送、下一个。

  2. inputmode

web平台的inputmode的浏览器兼容性如下: Chrome >= 66、Edge >= 79、Firefox >= 95、Chrome Android >= 66、Firefox for Android >= 79、Safari on iOS >= 12.2、WebView Android >= 66

  1. input组件有 inputmode 和 type、comfirm-type 3个相似的属性,它们的区别详解如下:
  • type:在 uni-app 和小程序中仅仅是输入框,定义 input 的工作方式,此值决定可输入什么值。比如 number 只能输入数字。
  • comfirm-type:定义键盘右下角按键的文字
  • inputmode:inputmode 属性是当使用某些值时会对键盘所作出的优化。

同时使用 inputmode 和 comfirm-type 时,若设值冲突,键盘右下角按键类型由 comfirm-type 决定。type 属性和 inputmode 属性并不冲突

Tips

  • html规范中input不仅是输入框,还有radio、checkbox、时间、日期、文件选择功能。但在uni-app规范中,input仅仅是输入框,其type属性代表不同的输入框。其他功能有单独的组件或API:radio组件checkbox组件图片选择等。
  • 从uni-app x 4.0起,App-Android平台 input 点击输入框外的屏幕会自动收起软键盘。
  • 从uni-app x 4.0起,App-Android平台 input 的 font-size 默认值统一为 16px。
  • iOS 自带键盘的智能标点功能会导致:连续输入两次 . 后,在第三次输入 . 时,会触发两次 deleteContentBackward(删除) 的输入外加一次 insertText 为 (三个点) 的输入。会导致在 type 为 numberdigit 时表现异常,关闭智能标点功能后正常。
反馈
建议
客服 返回
顶部