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

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

jiaweisi3个月前 (10-27)开发笔记204

今天用 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,这里进行设置输入框的高度,函数自己实现即可
	})
}


相关文章

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

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

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

发表评论

访客

看不清,换一张

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