uni-app Android平台软键盘英文状态下弹起后自动关闭问题
uni-app Android平台软键盘英文状态下弹起后自动关闭问题
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.1.22
手机系统:Android
手机系统版本号:Android 11
手机厂商:华为
手机机型:荣耀V30 pro
页面类型:vue
打包方式:云端
项目创建方式:HBuilderX
### 示例代码:
```html
<template>
<view>
<view v-show="kuang">
<textarea :focus="jujiao" [@blur](/user/blur)="textblur" v-model="message"></textarea>
<button class="cu-btn bg-red shadow" style="margin-right: 20rpx;width: 300rpx;height: 40px;box-shadow: none;" [@click](/user/click)="replynow">发布评论</button>
</view>
<view class="pingluntiao">
<view class="pinglunkuang" [@click](/user/click)="xianshikuang" >
<view class="dianjipinglun" >说说你的看法</view>
</view>
</view>
</view>
</template>
<script>
import {
mapState,
mapMutations
} from 'vuex'
var js;
export default{
name:'articleData',
data(){
return{
kuang:false,
jujiao:false,
}
},
methods:{
xianshikuang(){
this.kuang = true;
setTimeout(() => {
this.jujiao =true;
}, 500)
},
},
}
</script>
<style lang="scss">
[@import](/user/import) "../../wucss/neirong.css";
</style>
操作步骤:
点击button,弹出键盘后又自动关闭
预期结果:
点击button,弹出输入框键盘正常弹起,不会自动关闭
实际结果:
点击button,弹出键盘后又自动关闭
bug描述:
不管是textarea 组件还是input组件,在focus自动获取焦点后,键盘弹出后立即关闭了,就是闪一下,华为自带输入法没有这个问题,就是第三方的:搜狗、百度输入法 全键盘 英文状态下会有这个问题。

更多关于uni-app Android平台软键盘英文状态下弹起后自动关闭问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有调用失焦或者收起键盘事件?如果没有的话,提供一个简单可复现的demo
更多关于uni-app Android平台软键盘英文状态下弹起后自动关闭问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有调用任何失焦或者收起键盘事件,附件已提供能复现该事件的UNI-APP源码
搜狗输入法版本:V10.32 ,切换为26键全英文状态,会出现键盘弹出又迅速自动收起现象。
系统版本:Magic 4.0.0
手机型号:荣耀V30 Pro
Android版本:Android 10
提供的源代码,能完全复现该事件。
这个问题是由于Android平台第三方输入法(如搜狗、百度输入法)在英文全键盘模式下,当焦点快速切换时出现的兼容性问题。
解决方案:
-
延迟设置焦点(已采用,但需优化): 你已使用
setTimeout延迟设置焦点,但500ms可能不够。建议增加到800-1000ms:setTimeout(() => { this.jujiao = true; }, 800) -
使用nextTick: 在显示文本框后使用Vue的
nextTick确保DOM更新完成:xianshikuang(){ this.kuang = true; this.$nextTick(() => { setTimeout(() => { this.jujiao = true; }, 300) }) } -
避免焦点冲突: 确保按钮点击事件不会触发重新渲染或焦点丢失。检查
replynow方法是否执行了可能影响焦点的操作。 -
使用uni-app原生API: 考虑使用
uni.hideKeyboard()和uni.showKeyboard()手动控制键盘,但需注意时机。 -
输入法特定处理: 检测到第三方输入法时增加更长的延迟:
// 可尝试检测输入法类型,针对性处理

