uni-app 云打包时互动回复功能无法获取软键盘高度 导致遮挡回复框

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 云打包时互动回复功能无法获取软键盘高度 导致遮挡回复框

测试过的手机:

华为,小米 等。

操作步骤:

云打包,回复帖子 键盘无法顶起回复框。

预期结果:

云打包,回复帖子 键盘无法顶起回复

实际结果:

云打包,回复帖子 键盘无法顶起回复

bug描述:

云打包,互动回复,无法获取软键盘的高度。导致遮挡回复框。

App下载地址或H5网址:

https://app.nongmaoren.com/app/nongmaoren.apk

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 W10
HBuilderX类型 正式
HBuilderX版本号 4.28
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

1 回复

在处理uni-app云打包时互动回复功能无法获取软键盘高度导致遮挡回复框的问题时,我们可以通过调整页面布局和监听软键盘弹出事件来动态调整回复框的位置。以下是一个示例代码,展示了如何在uni-app中实现这一功能。

1. 页面布局调整

首先,我们需要确保页面的布局能够灵活适应软键盘的弹出。可以通过设置页面的position属性为relative,并动态调整回复框的bottom属性来实现。

<template>
  <view class="container">
    <view class="chat-content">
      <!-- 聊天内容区域 -->
    </view>
    <view class="reply-box" :style="replyBoxStyle">
      <input type="text" v-model="replyText" @focus="onInputFocus" @blur="onInputBlur" placeholder="回复"/>
      <button @click="sendReply">发送</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      replyText: '',
      keyboardHeight: 0,
      replyBoxStyle: {}
    };
  },
  methods: {
    onInputFocus() {
      // 监听软键盘弹出事件(假设使用uni.onKeyboardHeightChange)
      uni.onKeyboardHeightChange(res => {
        this.keyboardHeight = res.height;
        this.updateReplyBoxStyle();
      });
    },
    onInputBlur() {
      // 监听软键盘收回事件,重置回复框位置
      uni.offKeyboardHeightChange();
      this.keyboardHeight = 0;
      this.updateReplyBoxStyle();
    },
    updateReplyBoxStyle() {
      this.replyBoxStyle = {
        bottom: `${this.keyboardHeight}px`
      };
    },
    sendReply() {
      // 发送回复的逻辑
    }
  }
};
</script>

<style>
.container {
  position: relative;
  height: 100%;
}
.chat-content {
  flex: 1;
  overflow-y: auto;
}
.reply-box {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: center;
  padding: 10px;
  background-color: #fff;
  border-top: 1px solid #ccc;
}
input {
  flex: 1;
  padding: 5px;
  border: 1px solid #ccc;
  border-radius: 5px;
}
button {
  margin-left: 10px;
  padding: 5px 10px;
  background-color: #007aff;
  color: #fff;
  border: none;
  border-radius: 5px;
}
</style>

2. 注意事项

  • uni.onKeyboardHeightChange 是假设存在的监听软键盘高度变化的方法,实际使用中需要查阅uni-app官方文档确认具体方法名及用法。
  • onInputFocus方法中监听软键盘弹出事件,并根据获取到的高度动态调整回复框的位置。
  • onInputBlur方法中移除监听器并重置回复框位置。
  • 页面布局采用flex布局,确保聊天内容区域和回复框能够正确显示。

通过上述方法,可以有效解决uni-app云打包时互动回复功能无法获取软键盘高度导致遮挡回复框的问题。

回到顶部