IOS的输入框失焦滚动问题

Posted littleWang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS的输入框失焦滚动问题相关的知识,希望对你有一定的参考价值。

ios当输入框的位置在比较下面的时候,会发生滚动来让出键盘对应的位置,但是有的时候就会出现让出的位置在键盘下去时没有发生回滚,所以就会出现页面出现空白显示不全的问题。

解决方案:
在包含输入框的父元素进行事件监听,当出现失焦时判断是否是输入框,然后控制滚动。为了避免出现从一个滚动框到另一个滚动框出现滚动的问题,所以对滚动事件做了延迟和清除处理。失焦采用focusout事件监听,是因为blur事件不会冒泡。

 handleInputBlur(e) {
      if (
        e &&
        e.target &&
        e.target.tagName &&
        (e.target.tagName.toLowerCase() === \'input\' ||
          e.target.tagName.toLowerCase() === \'textarea\') &&
          e.target.getAttribute(\'readonly\') !== \'readonly\'
      ) {
        if (this.timer) {
          clearTimeout(this.timer)
        }
        this.timer = setTimeout(() => {
          window.scrollTo(0, 0)
        }, 50)
      }
    },
    // 获得焦点事件
    handleInputIn(e) {
      if (
        e &&
        e.target &&
        e.target.tagName &&
        (e.target.tagName.toLowerCase() === \'input\' ||
          e.target.tagName.toLowerCase() === \'textarea\') &&
           e.target.getAttribute(\'readonly\') !== \'readonly\'
      ) {
        if (this.timer) {
          clearTimeout(this.timer)
        }
      }
    }

Vue父元素包裹

<div  @focusout="handleInputBlur" @focusin="handleInputIn">

</div>

以上是关于IOS的输入框失焦滚动问题的主要内容,如果未能解决你的问题,请参考以下文章

vue如何获取输入框失焦绑定的值?

JQuery:当文本框失焦时,如何隐藏 DIV?

JS实现移动端实时监听输入框变化的实例代码

IOS 弹框在微信中导致输入框等失焦 偏移问题解决

解决IOS中input失焦后,页面上移,点击不了问题

fastclick使用与 fastclick ios11.3相关bug原因(ios输入框点击变得不灵敏,ios input失焦后,页面上移,点击不了)