uni-app subNvue input 安卓 聚焦失效

uni-app subNvue input 安卓 聚焦失效

开发环境 版本号 项目创建方式
Mac 11.5.2 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

HBuilderX类型:正式

HBuilderX版本号:3.3.13

手机系统:Android

手机系统版本号:Android 12

手机厂商:vivo

手机机型:vivo Y32

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

```{.language-javascript}
{
"path": "pages/searchpage/searchpage",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "black",
"app-plus":{
"titleNView": false, //禁用原生导航栏
"scrollIndicator": "none",
"bounce": "none",
"subNVues":[
{
"id":"searchNav", //原生子窗体标识
"path": "pages/searchpage/subNvue/nav",
"type":"navigationBar",
"style":{
"position": "absolute",
"dock": "top",
"width": "100%",
"height": "44px"
}
}
]
}
}
},
nvue页面内容  
<input
ref="input"
class="nav_right_input"
placeholder-class="nav_placeholder"
placeholder="请输入关键词"
type="text"
confirm-type="done"
return-key-type="search"
v-model="searchVal"
[@confirm](/user/confirm)="confirm"
[@blur](/user/blur)='blur'
/>
mounted() {
this.$nextTick(function(){
this.$refs.input.focus();  
})  
},

操作步骤: 就是以上代码

预期结果: 聚焦

实际结果: 没有聚焦

bug描述: 用原生子窗体写了一个含有搜索的导航栏,input 自动聚焦 iOS 生效,但是安卓不生效

4 回复

已反馈给相关人员排查,感谢反馈!


有结果了吗

打开时给子窗体发个消息,onShow收到消息后再聚焦

uni-app 中使用 subNvue 时,如果在安卓设备上遇到 input 聚焦失效的问题,可能是由于 subNvue 的层级问题或事件冲突导致的。以下是一些可能的解决方案和排查步骤:


1. 检查 subNvue 的层级

subNvue 是一个原生子窗体,默认会覆盖在 webview 之上。如果 subNvue 的层级设置不当,可能会导致 input 无法正常聚焦。

  • 确保 subNvuezIndex 设置合理,避免覆盖其他元素。
  • 如果不需要 subNvue 覆盖 input,可以尝试调整 subNvue 的位置或隐藏它。

2. 使用 focus 方法手动聚焦

如果自动聚焦失效,可以尝试通过 ref 手动调用 inputfocus 方法。

<template>
  <input ref="myInput" type="text" />
</template>

<script>
export default {
  mounted() {
    this.$nextTick(() => {
      this.$refs.myInput.focus();
    });
  },
};
</script>

3. 检查 subNvue 的事件冲突

subNvue 可能会拦截或影响 input 的事件。可以尝试以下方法:

  • subNvue 的配置中,检查是否有事件拦截或覆盖。
  • 如果 subNvue 中有按钮或其他交互元素,确保它们不会干扰 input 的聚焦。

4. 使用 nvue 页面替代 subNvue

如果 subNvue 的问题无法解决,可以考虑将相关功能迁移到 nvue 页面中。nvue 是原生渲染的页面,可能更稳定。


5. 更新 uni-app 版本

确保你使用的是最新版本的 uni-app,因为官方可能会修复一些已知的兼容性问题。

npm update @dcloudio/uni-app

6. 调试和日志

在安卓设备上开启调试模式,查看是否有相关的错误日志或警告信息。可以通过 console.loguni.showModal 输出调试信息。


7. 联系官方支持

如果以上方法都无法解决问题,可以到 uni-app 官方社区或 GitHub 仓库提交 issue,提供详细的复现步骤和代码,寻求官方支持。


示例代码

以下是一个简单的示例,确保 inputsubNvue 中能够正常聚焦:

<template>
  <view>
    <sub-nvue :style="{ zIndex: 1 }"></sub-nvue>
    <input ref="myInput" type="text" />
  </view>
</template>

<script>
export default {
  mounted() {
    this.$nextTick(() => {
      this.$refs.myInput.focus();
    });
  },
};
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!