2013-02-06 135 views
1

今天,我正面临iOS上的“典型”问题,用户在选择输入文本时滚动页面。关键是我正在使用包含大量文本的可滚动页面,我需要这个。所以我不能使用一种解决方案,通过防止默认设置,最小化视图等来禁用捕鱼。iOS上的Phonegap应用程序 - 页面上的文字输入焦点滚动

我基本上需要打开软件键盘而不滚动页面。

我还需要找到一个适合我的用户的解决方案 - 无屏幕闪烁等......经过一番研究,我终于找到了一个可行的解决方案。

请参阅下面的答案。

回答

3

的想法是在网页尽快恢复到原来的位置,从而防止了iOS滚动动画。

您只需一个focus处理程序添加到您的输入文本字段,并在此处理你先阅读window.scrollTop财产,不是设置回0毫秒的延迟。

这里是我的代码(使用jQuery):

$("#myinput").on("focus", function() { 
    var scrollTop = $(window).scrollTop(); 
    setTimeout(function() { 
     $(window).scrollTop = scrollTop; 
    }, 0); 
}); 

我希望有这没有错误 - 事实上,我现在用的打字稿,所以如果你想在这里看到我的原代码,它是:

this._inputText.on("focus",() => { 
    var jQueryWin:JQuery = <JQuery>$(window); 
    var scrollTop:number = jQueryWin.scrollTop(); 
    setTimeout(() => { 
     jQueryWin.scrollTop(scrollTop); 
    }, 0); 
}); 

行 - 我希望这有助于你们与输入元素打交道时更好地控制不必要的页面滚动。

+3

这对我无效。有没有其他人在这方面取得成功? – HasFiveVowels

+0

它正在工作!它不适用于@Tim的原因是,对于JavaScript版本,您必须更改 $(window).scrollTop = scrollTop; 至 $(window).scrollTop(scrollTop); –

相关问题