在ios中会出现这样的问题,当然手机端不会,在iPad端就会有这样的情况,开发中会遇到这样的问题,输入框在获取焦点后,键盘弹出会遮挡输入框,怎么解决问题呢?
1、iPad键盘是可以启用悬浮的,这样随便你怎么操作也不会出现遮挡输入框的问题;
2、可以采用全局获取输入框,对数据框获取焦点进行监听,获取焦点后可以将输入框滚动到可视区域,可以使用scrollIntoView方法,方法使用可参照以下链接文档:https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
解决方案如下:

// 获取焦点方法
function handleFocus(ev) {
  if (ev.target.tagName === 'INPUT') {
    document.body.style.paddingBottom = '40vh'
    setTimeout(() => {
      ev.target.scrollIntoView({ behavior: 'smooth', block: 'nearest' })
    }, 0)
  }
}
// 失去焦点方法
function handleBlur() {
  setTimeout(() => {
    if (document.activeElement.tagName !== 'INPUT') {
      document.body.style.paddingBottom = '0'
    }
  })
}
// 全局监听
document.documentElement.addEventListener('focus', handleFocus, true)
document.documentElement.addEventListener('blur', handleBlur, true)
onUnmounted(() => {
  document.documentElement.removeEventListener('focus', handleFocus, true)
  document.documentElement.removeEventListener('blur', handleBlur, true)
})
// 滚动页面将所以输入框失去焦点
document.body.addEventListener('touchmove', () => {
  document.activeElement.blur()
  handleBlur()
})
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐