- 需求的场景描述(希望解决的问题)
在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发。举个简单的例子
页面的wxml:
<button bindtap="focus">focus input</button> <button>blur input</button> |
页面js:
Page({ data: { focus: false
handleFocus(){ console.log("handleFocus")
console.log("handleBlur")
}) |
1、点击“focus input”按钮,focus变为true,开始拉起键盘,这个过程是有动画的。
2、直观上,键盘呼起动画持续时长大概是500ms ~ 1000ms,动画结束之后,handleFocus回调会被执行,打印handleFocus。
3、如果在键盘呼起的过程中快速点击“blur input”按钮,会立即触发blur事件。由于focus事件是在键盘动画结束之后触发的,handleBlur的执行时机反而在handleFocus之前了。
这个问题很严重,事件回调的顺序串了,很多逻辑就乱了。
不提供实例了,如果这个说法(在iOS中,input组件的focus事件回调会在键盘呼起动画结束后触发)成立,应该就能说明问题了。