vue VUX 移动端IOS H5 input键盘弹起页面被顶起,键盘'完成'收起后无法恢复正常,页面button错位导致无法触发

描述:H5 页面使用vue,vux 中的x-dialog 组件开发了一个可以编辑的页面,点击编辑按钮x-dialog 出现并进行数据编辑
vue VUX 移动端IOS H5 input键盘弹起页面被顶起,键盘'完成'收起后无法恢复正常,页面button错位导致无法触发_第1张图片
遇到的问题:在微信浏览器中进行编辑时Ios 键盘弹起会把页面向上顶起,然后键盘’完成’隐藏后页面没有复位,确认变更 按钮这时是错位的无法触发。
特别备注:IOS 自带浏览器,安卓自带浏览器(包括华为),安卓微信浏览器都没有此问题

解决办法:在mounted 中添加以下代码

mounted () {
    const u = navigator.userAgent
    const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
    // 如果是IOS设备
    if (isiOS) {
      let flag = false
      let pageBackNormFunc
      // 聚焦后,键盘弹起
      document.body.addEventListener('focusin', () => {
        flag = true
        pageBackNormFunc && clearTimeout(pageBackNormFunc)
      })
      // 失焦后,键盘关闭
      document.body.addEventListener('focusout', () => {
        if (flag) {
          // 页面滚动回原来的位置
          pageBackNormFunc = setTimeout(() => {
            window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })
          }, 200)
        }
        flag = false
      })
    }
  },

问题解决了!

你可能感兴趣的:(Vue)