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

检测在Xamarin.Forms.Scrollview中结束的滚动,xamarin.forms,Xamarin.forms,我正试图定制一个滚动视图,以满足我的特定需求,以及当用户停止滚动或以其他方式将手指从屏幕上移开时,我想做什么。我已经尝试了几种附加事件监听器的方法,但还没有找到一种能够触发任何事件的方法 我需要在android和iOS上完成这项工作,我很乐意在跨平台或特定平台的代码中完成这项工作 如果有人能提供任何指导,我将不胜感激 作为一个小提示,如果有人能解释为什么在我的自定义scrollview渲染器中,执行Touch+=MyTouchHandler不允许调用我的触摸处理程序,那将非常有帮助。您可以通过实

我正试图定制一个滚动视图,以满足我的特定需求,以及当用户停止滚动或以其他方式将手指从屏幕上移开时,我想做什么。我已经尝试了几种附加事件监听器的方法,但还没有找到一种能够触发任何事件的方法

我需要在android和iOS上完成这项工作,我很乐意在跨平台或特定平台的代码中完成这项工作

如果有人能提供任何指导,我将不胜感激


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

您可以通过实现此事件处理程序来检测它: 假设列表名为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();
       } 
   }
您可以在此处查看完整的实现详细信息:

var scrollView=new scrollView();
scrollView.scrolled+=OnScrolled
已滚动的私有void(对象发送者、滚动目标)
{
MyScrollView scrollView=发送方作为MyScrollView;
double scrollingSpace=scrollView.ContentSize.Height-scrollView.Height;
如果(滚动空间)
 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
     }