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 生效,但是安卓不生效
有结果了吗
打开时给子窗体发个消息,onShow收到消息后再聚焦
在 uni-app
中使用 subNvue
时,如果在安卓设备上遇到 input
聚焦失效的问题,可能是由于 subNvue
的层级问题或事件冲突导致的。以下是一些可能的解决方案和排查步骤:
1. 检查 subNvue
的层级
subNvue
是一个原生子窗体,默认会覆盖在 webview
之上。如果 subNvue
的层级设置不当,可能会导致 input
无法正常聚焦。
- 确保
subNvue
的zIndex
设置合理,避免覆盖其他元素。 - 如果不需要
subNvue
覆盖input
,可以尝试调整subNvue
的位置或隐藏它。
2. 使用 focus
方法手动聚焦
如果自动聚焦失效,可以尝试通过 ref
手动调用 input
的 focus
方法。
<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.log
或 uni.showModal
输出调试信息。
7. 联系官方支持
如果以上方法都无法解决问题,可以到 uni-app
官方社区或 GitHub 仓库提交 issue,提供详细的复现步骤和代码,寻求官方支持。
示例代码
以下是一个简单的示例,确保 input
在 subNvue
中能够正常聚焦:
<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>