检测滚动在Xamarin.Forms.Scrollview中结束

时间:2014-11-23 16:48:29

标签: xamarin.forms

我正在尝试自定义滚动视图以满足我的特定要求,并且我想要检查用户何时停止滚动或以其他方式将手指从屏幕上移开。我已经尝试了几种附加事件监听器的方法,但还没有找到一个实际触发任何事件的方法。

我需要在Android和iOS上完成这项工作,并且很乐意在跨平台或平台特定代码中执行此操作。

如果有人能提供任何指导,我将非常感激!

作为一个小旁注,如果有人能解释为什么在我的自定义scrollview渲染器中Touch += MyTouchHandler不允许调用我的触摸处理程序,那将非常有用。

2 个答案:

答案 0 :(得分:3)

您可以通过实现此事件处理程序来检测它: 假设您的列表名为 Items ,那么您需要将此代码添加到page.xaml.cs文件中:

    var listview = new ListView ();

    listview.ItemsSource = Items;
    listview.ItemAppearing += (sender, e) =>
    {
       if(isLoading || Items.Count == 0)
           return;

       //hit bottom!
       if(e.Item.ToString() == Items[Items.Count - 1])
       {
           LoadItems();
       } 
   }

您可以在此处查看完整的实施详情:https://gist.github.com/jamesmontemagno/465ced24fc8a206dcaf3#file-loadmoreonbottom-cs

答案 1 :(得分:1)

 var scrollView = new ScrollView ();
    scrollView.scrolled+=OnScrolled

    private void OnScrolled(object sender, ScrolledEventArgs e)
    {
        MyScrollView scrollView = sender as MyScrollView;
        double scrollingSpace = scrollView.ContentSize.Height - scrollView.Height;

        if (scrollingSpace <= e.ScrollY) // Touched bottom
            // Do the things you want to do
     }