uni-app 原生plus.nativeObj.view的drawinput 键盘弹起时弹起两个键盘的高度

uni-app 原生plus.nativeObj.view的drawinput 键盘弹起时弹起两个键盘的高度

示例代码:

let test1 = new plus.nativeObj.View('test',  
    {bottom:'0px',left:'0px',height:'44px',width:'100%',backgroundColor: '#FF0000'});  
test1.draw([  
    {tag:'input',id:'input',inputStyles:{fonstSize:'16px'},position:{top:'0px',left:'0px',width:'100%',height:'20px'}},  
    {tag:'font',id:'font',text:'原生控件',textStyles:{size:'18px'}}  
    ]);  
test1.show();

操作步骤:

预期结果:

  • 红色的input区域在键盘的上方 页面没有设置softinputMode 默认为adjustPan

实际结果:

  • input的位置是对的 因为能看到文本提示
  • 但是红色的父级区域在两个键盘的高度上 页面上移的高度也是对的

bug描述:

  • 原生input弹起来顶起这么高是为什么 而且实际的input的位置是对的

| 信息类别       | 信息内容         |
|----------------|------------------|
| 产品分类       | uniapp/App       |
| PC开发环境     | Windows          |
| PC开发环境版本 | win7             |
| 开发工具       | HBuilderX        |
| 开发工具版本   | 3.0.7            |
| 手机系统       | Android          |
| 手机系统版本   | Android 10       |
| 手机厂商       | OPPO             |
| 手机机型       | PACM00           |
| 页面类型       | vue              |
| 打包方式       | 云端             |
| 项目创建方式   | HBuilderX        |

更多关于uni-app 原生plus.nativeObj.view的drawinput 键盘弹起时弹起两个键盘的高度的实战教程也可以访问 https://www.itying.com/category-93-b0.html

27 回复

view.setStyle(styles); 这个方法也是 外层控件位置变了 input的位置 没有改变

更多关于uni-app 原生plus.nativeObj.view的drawinput 键盘弹起时弹起两个键盘的高度的实战教程也可以访问 https://www.itying.com/category-93-b0.html


没人理你hh

是的捏…

有的有的

回复 DCloud_UNI_GSQ: 修复吗这个bug?

用HX3.1.1试下

确认是bug吗?我用正式版不行吗?

试了也是这样

回复 安安静静是女神: 没复现问题 你提供完整示例 我们试下

回复 DCloud_Android_ST: 提供代码 新创建一个新页面 输入框点击之后还是一样的问题

回复 安安静静是女神: 没复现 换个手机试试。不行建议你使用nvue页面来实现 nativeObj的input放在底部存在缺陷

回复 DCloud_Android_ST: 什么时候修复…

回复 DCloud_Android_ST: 目前用nvue页面也是一样 底部放一个input 也会弹起两个键盘的高度!!!怎么修复?

<template> <view> <button @tap="draw">创建 </button> </view> </template> <script> export default { data() { return { } }, methods: { draw() { let test1 = new plus.nativeObj.View('test', { bottom: '0px', left: '0px', height: '44px', width: '100%', backgroundColor: '#FF0000' }); test1.draw([{ tag: 'input', id: 'input', inputStyles: { fonstSize: '16px' }, position: { top: '0px', left: '0px', width: '100%', height: '20px' } }, { tag: 'font', id: 'font', text: '原生控件', textStyles: { size: '18px' } } ]); test1.show(); } } } </script> <style> </style>

pages.json 配置
{
“path” : “pages/comp/test”
}

目前用nvue页面也是一样 底部放一个input 也会弹起两个键盘的高度!!!怎么修复?

HX什么版本?

回复 DCloud_Android_ST: 3.14.20210305

回复 安安静静是女神: 还是用 plus.nativeObj.View玩的?如果不是就发个demo我这边试下

回复 DCloud_Android_ST: nvue页面 我就想把input放到底部 不知道是什么问题一直是这个效果

我用你提供代码测试nvue也页面并没有发现问题。可能是手机系统或者输入法有关。你换几台手机试试

回复 DCloud_Android_ST: 是我需要配置什么吗?ios没问题 我安卓就是不行…

回复 安安静静是女神: 我提供了示例。你看下楼下回复。没有别的android机器了吗 模拟器也行呀

回复 DCloud_Android_ST: 好 我再试试

<template>
<view>都开始合肥市科技加思考了</view> <view class="inputBox"> <input type="text"> </view>
</template> <script> export default { } </script> <style> .inputBox{ position: fixed; bottom: 0; left: 0; right: 0; height: 80upx; background-color: #fff; } </style>

nvue页面 输入框点击 效果

HX3.1.4版本 测试示例 未发现问题 测试机荣耀play4T android10

这个问题是由于Android系统的软键盘弹起机制与原生控件布局的交互导致的。根据你的描述,实际input位置正确但父容器被顶起过高,可能是以下原因:

  1. 系统默认的adjustPan模式在处理原生控件时可能存在兼容性问题
  2. 原生View的布局计算与系统键盘弹起高度计算产生了叠加

建议尝试以下解决方案:

// 1. 明确设置softinputMode
plus.navigator.setSoftinputMode("adjustPan");

// 2. 修改原生View的创建方式
let test1 = new plus.nativeObj.View('test', {
    bottom: '0px',
    left: '0px',
    height: '44px',
    width: '100%',
    backgroundColor: '#FF0000'
});

// 3. 添加键盘事件监听
plus.key.addEventListener('hide', function(){
    test1.setStyle({bottom:'0px'});
});
plus.key.addEventListener('show', function(e){
    test1.setStyle({bottom:e.height+'px'});
});
回到顶部