接手二开的一个即时通讯聊天页面,输入框组件被哪个傻叉封装在第四层组件内,输入框组件根据键盘的唤起和隐藏使用js调整绝对定位fixed的bottom值,安卓端正常,但是ios端每次唤起键盘之后,输入框的fixed属性就失效了,输入框组件会跟着主页面的滚动条一起滚动导致输入框和键盘下面出现一大片空白区域,最终摒弃了他的动态调整bottom值的做法,让系统自己去推输入框。
在 iOS 的 WebView(UniApp 的 vue 页面本质是 WebView)中,当键盘唤起时,操作系统会强制推挤页面内容,而 position: fixed 元素在滚动发生时,会失去“固定”特性,跟随页面整体滚动。加上手动 JS 修改 bottom 值,造成“系统推了一次,又加了 bottom 推了一次”,导致出现巨大空白或定位错乱。

方案:
input 或 textarea 确保属性 :adjust-position='true'

pages.json为主页面添加属性 "softinputMode": "adjustResize"

"style": {
    "navigationBarTitleText": "聊天页",
    "app-plus": {
      "softinputMode": "adjustResize"
}