Skip to content

Instantly share code, notes, and snippets.

@benhysell
Created October 28, 2014 14:04
Show Gist options
  • Save benhysell/561daedeea96039a4526 to your computer and use it in GitHub Desktop.
Save benhysell/561daedeea96039a4526 to your computer and use it in GitHub Desktop.
Rx Throttle Event
//reactive extensions for scroll view
IEventPatternSource<EventArgs> ScrollReactSource;
/// <summary>
/// Occurs when react on decelerate. Contrived method to make working with the even easier
/// </summary>
public event EventHandler<EventArgs> ReactOnDecelerate
{
add { ScrollReactSource.OnNext += value; }
remove { ScrollReactSource.OnNext -= value; }
}
public void Setup()
{
scrollView = new PagedScrollView(){Frame = frameLocal }; //iOS scroll View that emits event "Scrolled"
//throttle the event, only react after user has stopped scrolling for 500 ms
ScrollReactSource = Observable.Throttle (Observable.FromEventPattern<EventArgs> (scrollView, "Scrolled"), new TimeSpan (0, 0, 0, 0, 500)).ToEventPattern();
ReactOnDecelerate += HandleReactOnDecelerate;
}
void HandleReactOnDecelerate (object sender, EventArgs e)
{
InvokeOnMainThread (() =>
{
//do work here
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment