【复现步骤】
- 在 uni-app 项目中创建一个包含
<input type="text" :adjust-position="false" />并且组件在页面底部的页面。 - 在
pages.json中为该页面配置"softinputMode": "adjustPan"(甚至尝试过"adjustNothing")。 - 使用三星 Galaxy S24 Ultra (Android 16 one ui8.5) 运行该应用。
- 点击输入框获取焦点,触发软键盘弹出。
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10 专业版 版本号22H2 OS内部版本19045.6466
HBuilderX类型: 正式
HBuilderX版本号: 5.03
手机系统: Android
手机系统版本号: Android 16
手机厂商: 三星
手机机型: galaxy s24 ultra
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
【复现步骤】
<input type="text" :adjust-position="false" />并且组件在页面底部的页面。 pages.json 中为该页面配置 "softinputMode": "adjustPan" (甚至尝试过 "adjustNothing")。 【预期结果】
由于设置了 :adjust-position="false",软键盘弹出时应直接覆盖在页面上方,WebView 窗体保持原位不发生位移,页面内容不被挤压或上推。
【实际表现】
系统在键盘弹起时强制将整个页面向上平移,:adjust-position="false" 及 softinputMode 的原生配置均失效。
【Bug描述】
Galaxy S24 Ultra 升级系统后,原本是没问题的,当 <input> 或 <textarea> 组件配置了 :adjust-position="false" 时,该属性完全失效。点击输入框弹出软键盘后,系统无视防上推指令,依然会将整个 WebView 页面向上平移顶起,导致页面布局错乱。Galaxy Z Flip4(android16、One UI8.0)和vivo x200s(android16)都是android16,是正常的
1 个回复
Ask小助手 - Ask社区AI助手
从这份 bug 反馈来看,问题描述得比较清晰,关键信息是齐全的。
关于反馈内容的评审:
:adjust-position="false"失效,页面被键盘顶起),并对比了同是 Android 16 的其他机型(Galaxy Z Flip4, vivo x200s)是正常的。这让排查方向非常明确,指向了特定厂商和系统的兼容性问题。<input type="text" :adjust-position="false" />的代码片段,这是核心配置。虽然没有完整页面代码,但对于这个级别的反馈来说已经足够说明问题。pages.json到在特定机型上操作,逻辑完整。根据这些信息,我们的测试人员完全可以尝试去复现。:adjust-position="false"的目的就是为了阻止页面上推,这个预期是正确的。adjust-position确实失效,那么表现就是页面被强制顶起。关于 bug 是否成立的分析:
这个 bug 是成立的,而且是一个非常典型的兼容性问题。
问题定性:从知识库中的 input组件关于软键盘弹出的逻辑说明 可以看到,
adjust-position属性正是为了控制 webview 窗体是否上推而设计的。用户正确配置后,在特定系统(三星 One UI 8.5)上失效,这属于系统层面的行为异常,是软件需要适配的问题。现有方案与局限:在知识库和社区中,可以看到很多关于键盘顶起页面的讨论和解决方案,例如:
softinputMode: "adjustResize":这个模式是挤压 webview 高度,而非上推,但可能会在部分安卓机上有闪现或布局问题。bottom属性来调整输入框位置。但这是一种绕过方案,而非从根本上解决adjust-position="false"失效的问题。知识库中的关联信息:优先知识库中有一条 nvue页面在部分ios系统上会被键盘上推页面,且键盘收回后也不复原 的记录,官方回复是“nvue 已不在维护,出现大的 bug,请提示用户使用最新的 uni-app x”。虽然用户反馈的是 vue 页面,但这表明当特定平台出现框架难以修复的底层键盘问题时,官方会建议迁移到更现代的架构。
综合建议:
这是一个需要官方进行适配修复的兼容性问题。直接原因是三星 Galaxy S24 Ultra 在升级到 One UI 8.5 (Android 16) 后,其系统 WebView 或输入法框架的行为发生了改变,导致 uni-app 框架的
adjust-position="false"指令无法生效。在官方修复此问题前,可以建议用户尝试以下临时替代方案:
pages.json中配置"softinputMode": "adjustResize",并调整页面布局以适应 webview 高度被挤压的情况。adjust-position="false"(即使它在此机型上失效),但通过监听keyboardheightchange事件获取键盘高度,手动计算并将输入框区域进行定位,以模拟不被顶起的效果。插件市场有一个 x-fixed-keyboard 插件,其思路就是处理这种场景,可以推荐用户参考或试用。要回复问题请先登录或注册
公告
更多>相关问题