2014-01-20 97 views
2

我需要在用戶完成滾動後將scrollviewer調整到某個點。爲此,我需要聽取滾動結束的時間。如何確定滾動查看器何時結束滾動?

的iOS的的UIScrollView有一些類似的方法

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView that is called when the scrollview 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

我試圖ViewChangingViewChanged,但問題同時處理這兩個事件是他們接二連三發生。就像下面:

視圖改變

視圖改變

視圖改變

視圖改變

..

..

代替 -

視圖改變

視圖改變

視圖改變

視圖改變

視圖改變

有什麼辦法我可以當ScrollViewer中已經做了通知滾動或完成滾動拖動?

請幫忙。

+0

也許你可以使用ManipulationCompleted事件 –

+0

我試着給它添加一個處理程序,但它永遠不會被調用。也許是因爲我的scrollviewer的屬性沒有改變。 – Ajeet

+0

'IsIntermediate'? http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.scrollviewer.viewchanged – Ouadie

回答

2

你可以做的是:

  • 1.Capture MouseWheel事件。
  • 2.Fire起來的MouseWheel事件處理程序的線程,會算時間,以提高你的自定義事件FinishedScrolling
  • 3,如果一個MouseWheel事件計時器完成之前得到提高,這意味着滾動沒有完成,你應該終止你的計時器線程並重新啓動它。

那是怎麼回事?它不應該佔用過多的代碼,如果你使用MVVM,你可以使用附加行爲。

+0

謝謝Mike!我已經搜索了很多,並基於我認爲,現在它是唯一的方法直到MS決定添加事件。 – Ajeet