2014-01-20 66 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