uni-app textarea输入框在安卓机型下点击出现键盘闪现
uni-app textarea输入框在安卓机型下点击出现键盘闪现
操作步骤:
- textarea输入框
预期结果:
- textarea输入框在安卓机型下点击出现键盘
实际结果:
- textarea输入框在安卓机型下点击出现键盘又消失
bug描述:
- textarea输入框在安卓机型下点击出现键盘又消失
项目 | 信息 |
---|---|
产品分类 | uniapp/小程序/微信 |
PC开发环境 | Windows |
PC版本号 | Windows 10 |
HBuilderX | 正式 |
HBuilderX版本 | 3.95 |
工具版本号 | 1.06.2310071win32-x64 |
基础库版本 | 3.2.2 |
项目创建方式 | HBuilderX |
5 回复
没复现出这个问题
你可以用官方的hellouniapp小程序 找到textarea组件 然后测试一下会不会有同样问题
我用苹果机测试没有问题 部分安卓机也没有问题 目前出现问题的是Google Pixel 5机型
回复 2***@qq.com: 解决了吗?我现在也有这个问题
OPPO NEO5也是键盘出现又消失
在 uni-app
中,textarea
输入框在安卓机型下点击时出现键盘闪现的问题,通常是由于安卓系统的键盘弹出机制与 uni-app
的渲染机制之间的冲突导致的。以下是一些可能的解决方案:
1. 使用 focus
事件延迟
在 textarea
的 focus
事件中,延迟一段时间再执行相关操作,以避免键盘闪现。
<template>
<textarea [@focus](/user/focus)="handleFocus"></textarea>
</template>
<script>
export default {
methods: {
handleFocus() {
setTimeout(() => {
// 在这里执行相关操作
}, 100); // 延迟 100ms
}
}
}
</script>
2. 使用 input
事件替代 focus
事件
有时候,使用 input
事件可以避免键盘闪现的问题。
<template>
<textarea @input="handleInput"></textarea>
</template>
<script>
export default {
methods: {
handleInput() {
// 在这里执行相关操作
}
}
}
</script>
3. 使用 uni.hideKeyboard()
方法
在 focus
事件中,手动隐藏键盘,然后再显示键盘。
<template>
<textarea [@focus](/user/focus)="handleFocus"></textarea>
</template>
<script>
export default {
methods: {
handleFocus() {
uni.hideKeyboard();
setTimeout(() => {
// 在这里执行相关操作
}, 100); // 延迟 100ms
}
}
}
</script>
4. 使用 uni.setKeyboardHeight()
方法
在某些情况下,设置键盘高度可以避免键盘闪现的问题。
<template>
<textarea [@focus](/user/focus)="handleFocus"></textarea>
</template>
<script>
export default {
methods: {
handleFocus() {
uni.setKeyboardHeight({
height: 300 // 设置键盘高度
});
}
}
}
</script>
5. 使用 uni-app
的 input
组件
如果 textarea
的问题无法解决,可以尝试使用 input
组件替代 textarea
,并根据需要调整样式。
<template>
<input type="text" [@focus](/user/focus)="handleFocus" />
</template>
<script>
export default {
methods: {
handleFocus() {
// 在这里执行相关操作
}
}
}
</script>
6. 检查 uni-app
版本
确保你使用的是最新版本的 uni-app
,因为官方可能会在后续版本中修复此类问题。
7. 使用原生插件
如果以上方法都无法解决问题,可以考虑使用原生插件来处理键盘的显示和隐藏。
8. 使用 scroll-view
包裹 textarea
有时候,将 textarea
包裹在 scroll-view
中可以避免键盘闪现的问题。
<template>
<scroll-view>
<textarea [@focus](/user/focus)="handleFocus"></textarea>
</scroll-view>
</template>
<script>
export default {
methods: {
handleFocus() {
// 在这里执行相关操作
}
}
}
</script>
9. 使用 uni-app
的 page
生命周期
在 page
的生命周期中处理键盘的显示和隐藏。
<script>
export default {
onShow() {
// 在这里处理键盘的显示和隐藏
}
}
</script>
10. 使用 uni-app
的 input
组件的 confirm-type
属性
在某些情况下,设置 confirm-type
属性可以避免键盘闪现的问题。
<template>
<textarea confirm-type="done" [@focus](/user/focus)="handleFocus"></textarea>
</template>
<script>
export default {
methods: {
handleFocus() {
// 在这里执行相关操作
}
}
}
</script>