uni-app ios在组件上使用input框唤起键盘后有问题
uni-app ios在组件上使用input框唤起键盘后有问题
操作步骤:
- 弄个组件带有遮罩层的组件,在里面写input像我视频里操作几下就能复现了
预期结果:
- 我隐藏键盘后,我要正常关闭组件
实际结果:
- 不行,反复弹出键盘
bug描述:
- ios的input输入框在组件上用的时候,唤起过键盘会出问题;
- 我把带有“完成”的横条去掉了,直接点击键盘里的完成,我去调用隐藏键盘的api
- 键盘隐藏了,但是我点击我组件的遮罩层,键盘又起来了
- 不光是遮罩层,除了点击返回上个界面,点哪里键盘都会起来,这样我关不掉我的组件了
- 建议触发了完成按钮或者安卓的回车按钮,自动隐藏键盘,而不是像我现在一样需要去调用隐藏键盘api
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | 20H2 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.18 |
| 手机系统 | iOS |
| 手机系统版本号 | IOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | iPhone8plus |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app ios在组件上使用input框唤起键盘后有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有测试在其他平台是什么表现吗?
更多关于uni-app ios在组件上使用input框唤起键盘后有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
小程序很正常,安卓试了小米8se也还好,就ios有这种问题,这么严重,居然没有人提,我也是搞不懂,希望能app很多api能对齐微信小程序,不管是样式或者处理逻辑
回复 AndySy: 收起键盘后,手动设置input框失焦试试
回复 DCloud_UNI_LXH: 没用,你们能模拟试一下么??这么严重的bug,直接写个弹窗里面放个input框就能出现问题了
刚刚测试发现同样的情况下,iosapp刚启动的时候,第一次调用弹窗,点击input,苹果键盘是第三方的输入法的话,会有问题,如果是系统自带的输入法就是正常的
出现的状况是,输入法出来了,弹窗没挤上去
第二次调用就正常了,每次app刚启动的时候第一次调用会有问题,这个是新问题,跟我帖子的问题不冲突
回复 DCloud_UNI_LXH: 目前在iPhoneXR上试的,搜狗输入法
问题已确认,已加分,下版修复。
HBuilder X 3.1.22 已修复
帮忙看下这个问题,input自动出现光标 https://ask.dcloud.net.cn/question/138953 谢谢
这是一个典型的iOS键盘事件处理问题。在uni-app中,iOS平台下input组件与键盘的交互确实存在一些特殊行为。
问题分析:
当iOS键盘被唤起后,即使调用uni.hideKeyboard()隐藏键盘,系统仍会保持input的焦点状态。此时点击页面任何位置(除了导航返回),都会重新触发键盘弹出。
解决方案:
-
强制失焦处理 在隐藏键盘的同时,需要手动让input失去焦点:
// 在完成按钮或遮罩层点击事件中 this.hideKeyboard()methods: { hideKeyboard() { // 先隐藏键盘 uni.hideKeyboard() // 让input失去焦点 this.$refs.inputRef.blur() } } -
遮罩层点击事件优化 确保遮罩层点击事件正确阻止冒泡并处理焦点:
<view class="mask" [@tap](/user/tap)="handleMaskTap"></view>handleMaskTap() { this.hideKeyboard() // 关闭组件逻辑 this.$emit('close') }


