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

232dd152885c9393175ec929a4a36e81.zip


更多关于uni-app ios在组件上使用input框唤起键盘后有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

有测试在其他平台是什么表现吗?

更多关于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刚启动的时候第一次调用会有问题,这个是新问题,跟我帖子的问题不冲突

回复 AndySy: 具体是什么输入法在第一次的时候没有把webview推上去?

回复 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的焦点状态。此时点击页面任何位置(除了导航返回),都会重新触发键盘弹出。

解决方案:

  1. 强制失焦处理 在隐藏键盘的同时,需要手动让input失去焦点:

    // 在完成按钮或遮罩层点击事件中
    this.hideKeyboard()
    
    methods: {
      hideKeyboard() {
        // 先隐藏键盘
        uni.hideKeyboard()
        // 让input失去焦点
        this.$refs.inputRef.blur()
      }
    }
    
  2. 遮罩层点击事件优化 确保遮罩层点击事件正确阻止冒泡并处理焦点:

    <view class="mask" [@tap](/user/tap)="handleMaskTap"></view>
    
    handleMaskTap() {
      this.hideKeyboard()
      // 关闭组件逻辑
      this.$emit('close')
    }
回到顶部