监听ios端弹出虚拟键盘,以及获得键盘高度。

问题描述

工作做了一个手机使用编辑器编辑文章的功能,ios弹出键盘,不能将编辑器顶上去。安卓端没有问题。

原因分析:

苹果弹出功能并不会将视口变小,从而导致虚拟键盘将编辑器覆盖,安卓的处理是将视口变小,将编辑器顶在虚拟键盘之上。


解决方案:

使用window.visualViewport监听高度变化,当高度小于视口高度说明虚拟键盘弹出,用视口高度减去头部以及visualViewport高度就得到了键盘高度。

// 使用window.visualViewport来监听高度变化
    keyboardUp () {
      var u = navigator.userAgent;
      var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
      const innerH = window.innerHeight
      if(isIOS){
        const handler = ()=>{
          if(!window.visualViewport) return
          const height = window.visualViewport.height
          this.elEditor.then(res=>{
            if(height < innerH) {
              res.style.bottom = (innerH-height-67)+'px'
            }else if(height == innerH) {
              res.style.bottom = 0
            }
          })
        }
        window.visualViewport.addEventListener('resize',handler)
      }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值