今天,当用户选择输入文本时,我在 iOS 上遇到了一个“典型”问题,即页面滚动。关键是我正在使用一个包含很多文本的可滚动页面,我需要这个。所以我不能使用通过防止默认、最小化视图等来禁用 scolling 的解决方案。
我基本上需要在不滚动页面的情况下打开软件键盘。
我还需要找到一个适合我的用户的解决方案 - 不闪烁屏幕等......经过一些研究,我终于设法找到了一个可行的解决方案。
请看下面我的回答。
想法是尽快将页面返回到其原始位置,从而防止 iOS 滚动动画。
您只需在输入文本字段中添加一个focus
处理程序,在此处理程序中,您首先读取window.scrollTop
属性,然后以 0 毫秒的延迟将其设置回来。
这是我的代码(使用 jQuery):
$("#myinput").on("focus", function() {
var scrollTop = $(window).scrollTop();
setTimeout(function() {
$(window).scrollTop = scrollTop;
}, 0);
});
我希望这没有错误 - 实际上我使用的是 TypeScript,所以如果你想在这里查看我的原始代码,它是:
this._inputText.on("focus", () => {
var jQueryWin:JQuery = <JQuery>$(window);
var scrollTop:number = jQueryWin.scrollTop();
setTimeout(() => {
jQueryWin.scrollTop(scrollTop);
}, 0);
});
好的 - 我希望这可以帮助你们在处理输入元素时更好地控制不需要的页面滚动。