【uniapp】关于小程序输入框聚焦、失焦(输入法占位)的问题

聊天小程序,界面带有输入框,当输入框中聚焦后,底部自动谈起输入法。此时输入框也要随之出现在输入法上方。默认情况下,输入框此时会被输入法覆盖掉。

以下是亲自实践,解决这个问题的方法:

一、小程序大概布局

复制代码
<template>
	<view style="height: 100%; display: flex; flex-direction: column;">
		
		<!-- 自定义导航栏 -->
		<head-nav :navRedirectPage="navRedirectPage"></head-nav>
		
		<!-- 小程序界面内容 -->
		<view class="container" :style="containerStyle">
			<!-- 聊天界面内容 -->
			<scroll-view ref='list' :scroll-top="scrollTop" class="chat-container" :scroll-y="true"></scroll-view>
			
			<!-- 底部输入框 -->
			<view class="bottom-bar"  :style="bottom_autosize_style">
				<view class="input-view">
						<uv-textarea selectable="true" :cursor-spacing="20" v-model="inputText" :inputBorder="false" customStyle="overflow: scroll;max-height: 75px;border-width: 0px !important;background-color: #F7F7FC;margin-left: 12px;padding: 7px;"
			:adjust-position="false" :show-confirm-bar='false' @blur="inputBindBlur" :maxlength="500" autoHeight placeholder="请输入内容" @focus="inputBindFocus"></uv-textarea>					
					<button class="send-button" @click="sendMessage"
						:disabled="!inputText.trim().length>0 || sendDisabled">
						<image class="send-message" src="/static/v2/aichat/fasong.png" />
					</button>
				</view>
			</view>
		</view>
	</view>
</template>

css样式表:

  • 默认样式为:

    复制代码
      // 聊天窗口
      .chat-container {
      	flex-grow: 1; // 窗口大小为可变
      	overflow-y: auto;
      }
    
      // 底部输入框
      .bottom-bar {
      		position: relative;
      		display: flex;
      		align-items: center;
      		padding: 6px 13px 6px 13px;  // 主要是padding-bottom变化
      }
  • 当焦点在输入框内时,需要调整内容:

    // 聚焦方法
    inputBindFocus(e){
    console.log('e.detail.height:', e.detail.height)
    if (e.detail.height) {
    this.bottom_autosize_style = "padding-bottom:" + (e.detail.height + 6ssss) + "px;"
    if (!this.showScrollToBottom) {
    this.scrollToBottom();
    }
    }
    },
    // 失焦方法
    inputBindBlur(){
    // this.containerStyle = ' height:' + this.containerHeight + 'px;';
    this.bottom_autosize_style = ""
    if (!this.showScrollToBottom) {
    this.scrollToBottom();
    }
    }

请注意 bottom_autosize_style 这个变量的变化,即可实现。

相关推荐
2501_933907211 小时前
南京本凡科技,怎么选择专业小程序开发才能提升品牌竞争力?
科技·微信小程序·小程序
笨笨狗吞噬者2 小时前
维护 uniapp 小程序端近一年,我想拉一个开发者交流群
前端·程序员·uni-app
2501_933907215 小时前
本凡科技提供的宁波小程序开发服务全面解决方案
科技·微信小程序·小程序
左师佑图5 小时前
微信小程序集成 Day.js 插件的完整解决方案
微信小程序·小程序
2501_933907215 小时前
本凡科技提供宁波小程序服务与定制解决方案
科技·微信小程序·小程序
计算机徐师兄5 小时前
Java基于SpringBoot的运动健康小程序【附源码、文档说明】
spring boot·小程序·运动健康·java运动健康小程序·运动健康小程序·java运动健康微信小程序·运动健康微信小程序
Xpower 175 小时前
OpenClaw实战:从零开发电商小程序(2)
人工智能·语言模型·小程序·gateway
2501_9339072114 小时前
宁波小程序开发服务与技术团队专业支持
科技·微信小程序·小程序
sheji34161 天前
【开题答辩全过程】以 基于微信小程序的少儿编程学习平台为例,包含答辩的问题和答案
学习·微信小程序·小程序
const_qiu1 天前
微信小程序自动化测试100%通过率实践
微信小程序·小程序