点击input输入框,查看console日志。
注册f1,f2后注销f2,再注册f3,应该看到f1和f3的日志
但是只有f3的日志,而且触发了3条f3日志。
function f1() {console.log('f1')}
function f2() {console.log('f2')}
function f3(res) {console.log('f3', res)}
wx.onKeyboardHeightChange(f1)
wx.onKeyboardHeightChange(f2)
wx.offKeyboardHeightChange(f2)
wx.onKeyboardHeightChange(f3)
Bug:
1. onKeyboardHeightChange 会覆盖已注册的函数
2. offKeyboardHeightChange 会注销所有的函数
3. 1次 KeyboardHeight 事件会触发3次监听函数,3次的参数不一致
这是个明显的bug,等待官方修复吧。卸载事件时会把所有事件卸掉
关于bug1::楼主,这个是你使用的问题 wx.onKeyboardHeightChange官方应该只考虑到了绑定一个function,而你绑定了三次 。
关于bug2:因为bug1传入的function被覆盖掉了,所以,对于offKeyboardHeightChange注销掉的其实是最后一个绑定进去的function,而并非你说的会注销所有的函数。
关于bug3:
请下面链接中官方参考文档中的:
https://developers.weixin.qq.com/miniprogram/dev/component/input.html
键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉。
至于返回参数问题:参考官方
https://developers.weixin.qq.com/miniprogram/dev/api/ui/keyboard/wx.onKeyboardHeightChange.html
文档中所述,提供给开发者返回的height 属性是没有问题的。
解决了您的bug的话,麻烦给点个有用。
建议写法:在page或者组件页面中的data定义一个键盘高度变量,当键盘高度发生改变的时候,将这个页面中的data中定义的键盘高度变量的值赋值为键盘高度,当键盘隐蔽掉时,将该键盘高度的变量赋值为隐蔽掉键盘后的键盘高度。使用时,直接取监听该变量的改变即可。
怎么安卓不是这样么?
谢邀。不懂。