uni-app 安卓系统小窗口模式下 nvue页面 input 键盘弹起会自动收回

uni-app 安卓系统小窗口模式下 nvue页面 input 键盘弹起会自动收回

6 回复

请升级至HBuilder X 3.4.5-alpha试下,仅这个设备出现问题吗?其他设备是否正常?

更多关于uni-app 安卓系统小窗口模式下 nvue页面 input 键盘弹起会自动收回的实战教程也可以访问 https://www.itying.com/category-93-b0.html


已是最新版 设备有小窗口模式功能的 都有问题

回复 9***@qq.com: Android 11 Redmi K40 ,未复现问题。其他设备是否正常?请提供下必现机型具体信息

回复 DCloud_UNI_Anne: 鸿蒙 HUAWEI nova 3i 悬浮窗口拉到底下一点 不够键盘的高度 就会收起

回复 9***@qq.com: 还有其他必现设备吗?

uni-app 中,当你在安卓系统的小窗口模式下使用 nvue 页面时,可能会遇到 input 键盘弹起后自动收回的问题。这通常是由于小窗口模式下系统对输入焦点的处理方式与全屏模式不同所导致的。

以下是一些可能的解决方案:

1. 使用 focus 事件手动保持焦点

你可以在 inputfocus 事件中手动保持焦点,避免键盘自动收回。

<template>
  <view>
    <input 
      ref="inputRef" 
      @focus="onFocus" 
      placeholder="请输入内容" 
    />
  </view>
</template>

<script>
export default {
  methods: {
    onFocus() {
      // 手动保持焦点
      this.$refs.inputRef.focus();
    }
  }
}
</script>

2. 使用 blur 事件检测失焦

你可以在 inputblur 事件中检测是否失焦,并重新获取焦点。

<template>
  <view>
    <input 
      ref="inputRef" 
      @blur="onBlur" 
      placeholder="请输入内容" 
    />
  </view>
</template>

<script>
export default {
  methods: {
    onBlur() {
      // 检测到失焦后重新获取焦点
      this.$refs.inputRef.focus();
    }
  }
}
</script>

3. 使用 uni.onKeyboardHeightChange 监听键盘高度变化

你可以使用 uni.onKeyboardHeightChange 监听键盘高度的变化,并在键盘弹起时手动保持焦点。

<template>
  <view>
    <input 
      ref="inputRef" 
      placeholder="请输入内容" 
    />
  </view>
</template>

<script>
export default {
  mounted() {
    uni.onKeyboardHeightChange(res => {
      if (res.height > 0) {
        // 键盘弹起,手动保持焦点
        this.$refs.inputRef.focus();
      }
    });
  }
}
</script>

4. 使用 uni.setNavigationBarTitle 设置导航栏标题

在某些情况下,设置导航栏标题可能会帮助系统正确处理输入焦点。

<template>
  <view>
    <input 
      ref="inputRef" 
      placeholder="请输入内容" 
    />
  </view>
</template>

<script>
export default {
  mounted() {
    uni.setNavigationBarTitle({
      title: '输入页面'
    });
  }
}
</script>

5. 检查 nvue 页面的布局

确保 nvue 页面的布局没有导致输入框被遮挡或焦点丢失的问题。例如,检查 input 是否在 scroll-view 或其他可能影响焦点的容器中。

6. 使用 uni-app 官方提供的解决方案

如果以上方法都无法解决问题,建议查看 uni-app 官方文档或社区,看看是否有针对此问题的官方解决方案或更新。

7. 更新 uni-app 版本

确保你使用的是最新版本的 uni-app,因为新版本可能已经修复了相关的问题。

8. 使用 HBuilderX 调试工具

使用 HBuilderX 的调试工具,查看是否有相关的错误日志或警告信息,帮助你更好地定位问题。

9. 使用 inputconfirm-type 属性

在某些情况下,设置 inputconfirm-type 属性可能会帮助系统正确处理输入焦点。

<template>
  <view>
    <input 
      ref="inputRef" 
      confirm-type="done" 
      placeholder="请输入内容" 
    />
  </view>
</template>

10. 使用 inputfocus 属性

你可以在 inputfocus 属性中设置初始焦点,确保输入框在页面加载时即获得焦点。

<template>
  <view>
    <input 
      ref="inputRef" 
      :focus="true" 
      placeholder="请输入内容" 
    />
  </view>
</template>
回到顶部