2013-02-06 95 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); –

相關問題