2016-05-13 29 views
1

我有一個離子框架的原生滾動問題。以下在瀏覽器中正常工作,但在編譯到iOS時無法正常工作。如果我每隔一段時間輪詢$ionicScrollDelegate.getScrollPosition(),我都沒有得到最新的持倉價值。只有當減速結束或用戶再次觸摸該值被更新時。我通過所有離子滾動代碼進行了深入研究,但似乎值來自更深的內部API,因爲我試圖使用本機而不是js滾動。有沒有辦法直接從科爾多瓦獲取滾動位置?

在試圖破解它周圍,我嘗試使用DOM API,讓我的內容的窗口相對位置:

inversePosition = divContainer.getBoundingClientRect().left;

但同樣缺乏更新的這個遭遇。這使我認爲它甚至不可能。

有沒有辦法更直接地獲得職位?我願意自己鑽研離子js捆綁包,但我不知道從哪裏開始,甚至找到核心的cordova滾動API文檔。

基本上,我的用例與映射應用程序類似,我需要實時準確的滾動位置數據。

我在離子lib中開設了一個issue,但我懷疑任何人會得到它與398個的其他公開問題....

標記PhoneGap的,因爲,因爲PhoneGap的包裝科爾多瓦的歡迎,並在PhoneGap的解決方案可能是適用於這個問題。

+0

把我的頭髮拉出來。也許我們可以深入到xCode項目的cordova代碼中? 'UIScrollView'? – FlavorScape

+0

在Nativescript中我有相同類型的問題,位置不會更新,直到我釋放滾動事件。我很好奇,如果有一個本地解決方案的滾動問題,也可以在Nativescript中使用。 –

+0

所以,我有一個原型解決方案,我會在我驗證它時發佈。我基本上模擬iOS的物理特性,在減速時「預測」這個值。如果離子/ cordova至少可以提供targetContentOffset,那將會很好。如果你有一個準確的目標,你可以更準確地模擬減速。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/ – FlavorScape

回答

0

檢查iScroll

我沒有在離子項目中使用它,只有在骨幹網,科爾多瓦的項目,但我想它會成功一樣。

它增加了很多javascript級別的滾動功能,它有點難以實現,因爲它使用自己的CSS和HTML模型,但它提供了很多交換的東西,例如current位置。

+0

我的用例是性能強烈的,因此需要溢出滾動所使用的本機滾動。我無法使用JavaScript滾動,對於我的應用程序來說太麻煩了。相信我,我試過=) – FlavorScape

0

請嘗試以下代碼獲取滾動位置的信息:

  • HTML
<div id="mySrollDiv"> 
... 
</div> 
  • JS:

var scrollTop = document.getElementById('mySrollDiv')。scrollTop; var offsetHeight = document.getElementById('mySrollDiv')。offsetHeight; var scrollHeight = document.getElementById('mySrollDiv')。scrollHeight;