You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 13 WebView 键盘收起后底部留白无法复位问题如何解决

iOS 13 WebView键盘收起后视口不回落问题修复方案

前端H5侧适配方案(无需修改原生容器代码)

  • 基础配置校验:确保页面头部已添加正确的viewport声明
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
  • 监听输入框状态手动复位视口:通过监听输入框的失焦事件,在iOS 13环境下手动回滚视口到原始位置,代码示例如下:
// 匹配iOS 13系统
const isIOS13 = /iPhone OS 13_/.test(window.navigator.userAgent)
// 存储输入框聚焦时的原始滚动位置
let originScrollTop = 0

// 遍历所有表单输入元素绑定事件
document.querySelectorAll('input, textarea').forEach(el => {
  el.addEventListener('focus', () => {
    originScrollTop = document.documentElement.scrollTop || document.body.scrollTop
  })
  el.addEventListener('blur', () => {
    if (!isIOS13) return
    // 延迟执行避开键盘收起动画过程
    setTimeout(() => {
      // 滚动回原始位置
      window.scrollTo({
        top: originScrollTop,
        behavior: 'auto'
      })
      // 额外修复视口高度计算异常
      document.body.style.height = `${window.innerHeight}px`
      setTimeout(() => {
        document.body.style.height = ''
      }, 10)
    }, 20)
  })
})

原生容器侧适配方案(原生APP嵌入WebView场景优先使用)

监听系统键盘收起通知,在iOS 13系统下主动复位WebView的滚动位置,Swift代码示例如下:

// 注册键盘收起监听
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

@objc func keyboardWillHide(notification: NSNotification) {
    // 仅适配iOS 13版本,iOS 14及以上官方已修复无需处理
    if #available(iOS 14.0, *) {
        return
    } else if #available(iOS 13.0, *) {
        guard let userInfo = notification.userInfo else { return }
        // 与键盘动画保持同步避免闪烁
        let duration = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double ?? 0.25
        UIView.animate(withDuration: duration) {
            // 复位WebView滚动偏移
            self.webView.scrollView.contentOffset = .zero
            // 如需保留用户原有滚动位置,可替换为恢复focus前存储的contentOffset值
        }
    }
}

问题现象参考截图

正常页面布局
键盘唤起后视口正常上移
键盘收起后底部留白异常

内容的提问来源于stack exchange,提问作者Johji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:18:03