当前位置:首页 > 开发笔记 > 正文内容

uniapp开发抖音小程序监听键盘弹起keyboardheightchange,并获取键盘高度

jiaweisi4个月前 (10-27)开发笔记307

今天用 Uniapp 开发抖音小程序,有个核心需求:点击输入框时,键盘弹起后能自动 “顶起” 输入框,避免输入框被键盘遮挡。这就需要实时监听到键盘高度,再把高度设给输入框的样式 —— 说起来简单,实操时却踩了不少坑。

一开始想当然用了 Uniapp 的onKeyBoardHeightChange API,结果在抖音端根本没反应。查了下才知道,抖音小程序压根不支持这个接口,白忙活一场。

接着问 AI,得到的答案翻来覆去还是叫我用onKeyBoardHeightChange,看来它也没吃透抖音的特性。没办法,只能自己啃抖音小程序文档,还真发现 input 组件有个bindkeyboardheightchange事件,专门用来监听键盘高度变化 —— 本以为找到救星,结果直接用上去,事件死活不触发,又卡壳了。

那阵子真有点想放弃,去 GitHub 和 Uniapp 插件市场翻了个遍,也没找到能直接获取抖音键盘高度的第三方库。

最后抱着死马当活马医的心态,试了试在绑定bindkeyboardheightchange时,配合this.$nextTick延迟初始化 —— 没想到,成了!

关键代码(template 部分,重点看keyboardheightchange的绑定):

<!-- 核心是通过keyboardheightchange监听,配合nextTick确保事件能触发 -->
<input 
  v-model="inputVal"
  @keyboardheightchange="handleKeyboardHeightChange"
  placeholder="请输入内容"
/>

折腾了一圈才发现,抖音小程序的事件触发时机比较特殊,有时候确实需要用nextTick等 DOM 更新完再绑定,才能稳稳监听到键盘高度。总算解决了,记录一下免得下次再踩坑。

handleKeyboardChange(e) {
    this.$nextTick(() => {
	    // console.log("弹起了!", e); 
		this.changeKeyBordHeight(e.detail.height) //键盘的高度就是e.detail.height,这里进行设置输入框的高度,函数自己实现即可
	})
}


相关文章

VS2022 编译的程序依赖的 VC 运行库 DLL 怎么手动提取随程序打包这样让没有安装的电脑也能运行?

VS2022 编译的程序依赖的 VC 运行库 DLL 怎么手动提取随程序打包这样让没有安装的电脑也能运行?

VS2022 编译的程序依赖的 VC 运行库 DLL 怎么手动提取随程序打包这样让没有安装的电脑也能运行?在 VS2022 中手动提取并打包程序依赖的 VC 运行库 DLL,让未安装 vc_redist.x64.exe 的电脑也能运行程序,可按以下 4 个步骤 操作,每一步都有明确的操作指引:步骤 1:确定程序依赖的 VC 运行库 DLL(关键!避免盲目复制)首先需要明确你的程序具体依赖哪些 VC 运行库 DLL(不同程序依赖可能不同,比如是否包含 VCRUNTIME140_1.dll 等)。推荐用 VS 自带的 dumpbin 工具 精准查询:操作步骤:1、打开 VS2022 开发人员命令提示符:按下 Win + S,搜索 “Developer Command Prompt for VS 2022”,右键 “以管理员身份运行”(确保权限足够)。2、定位到你的程序 .exe 所在目录:用 cd 命令切换路径,例如:cd C:\你的程序输出目录\Release  # 假设程序在 Release 文件夹下3、执行命令查看依赖的 D...

【开发笔记】创胜系列增加游戏开局确认(自动准备和非自动准备)功能

【开发笔记】创胜系列增加游戏开局确认(自动准备和非自动准备)功能

【开发笔记】只记录逻辑分析和注意的地方,其他简单的不做记录。逻辑分析:1。俱乐部设置增加开局确认数据保存到数据库2。创建房间后发送发送的房间数据带上开局联盟设置的参数3。进入联盟时查询房间列表时要带上参数1  2两个问题好解决,需要注意的是第三个问题。第三个问题有两个地方,是分别是联盟和俱乐部,似乎是两种不同的请求。因为定制的俱乐部,联盟没去仔细看。代码猜测是联盟反向注册到协调服务器的时候带上参数,这种方式会比较简单,修改量比较少。俱乐部却不是这里,俱乐部是全局的:CGlobalInfoManager::CreateRoom这个函数,最好的就是对这个函数传入的时候多添加一个参数进去,然后存储数据的时候一起保存起来,然后再进入俱乐部查询房间的地方为每个房间添加这个参数,前端 UI根据这个参数是否显示开局确认提示标志。联盟查询房间列表是:CAttemperEngineSink::OnTCPNetworkMainClubService这个函数中的://查询现有房间 std::vector<tagRoomTableStatus*> vRoomTa...

完善棋牌台子出租,包升级维护等全包

完善棋牌台子出租,包升级维护等全包

完善棋牌台子出租,包升级维护等全包。包服务器+包维护+24小时在线解决+全部权限+单独服务器独立运营。完全独立的,你只负责经营你的就行,如果有问题或者需要做玩法调整可修改。效果演示视频:...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。