form表单可输入框input,在接受用户点击时,会触发键盘弹起。
弹起后的键盘,遮挡了当前编辑的input框
解决办法是:
监听键盘弹起,找到当前元素,调用元素的scrollIntoView 方法,将遮挡元素滚动到屏幕可是区域内
代码如下
windowHeight: number = 0;
componentDidMount() {
// 记录初始化后屏幕的高度
this.windowHeight = window.innerHeight;
// 监听resize方法,判断键盘是否弹起
window.addEventListener('resize', this.resizeEvent);
}
componentWillUnmount() {
window.removeEventListener('resize', this.resizeEvent);
}
resizeEvent = () => {
// 屏幕可是高度小于初始屏幕高度时,说明键盘弹起
if (this.windowHeight > window.innerHeight) {
// 键盘弹出事件处理,找到当前操作的dom元素
const formElement = document.getElementById(this.props.id || 'listFormId');
// 使用元素自带的scrollIntoView,将被遮挡元素移动到屏幕可视区域内
formElement?.scrollIntoView({ behavior: "smooth", block: "start", inline: "start" });
}
};