Xamarin Forms - определяет, когда пользователь начинает прокручивать вниз в виде прокрутки. - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть вид прокрутки, который, как только пользователь начинает прокручивать вверх, запускает некоторый код (OnSwipeUp ()).Я обнаруживаю это с помощью

textScroll.Scrolled += (sender, e) => { onScrolled(); };

private void onScrolled()
{
      if(textScroll.ScrollY > 0)
      {
          OnSwipeUp(null, null);
      }
}

Мне также нужно определить, когда пользователь начинает прокручивать вниз, поэтому я думал о том, чтобы получить максимальную позицию Y прокрутки, затем произнесу что-то вроде

if(textScroll.ScrollY < maxY)
* 1006.* Могу ли я сделать это?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вам не нужно получать максимальную позицию Y, потому что перед прокруткой вниз позиция Y всегда равна 0. Так что вам просто нужно получить направление прокрутки.Я написал демонстрацию, чтобы доказать это:

MainPage.xaml.cs

private double previousScrollPosition = 0;

        public MainPage()
        {
            InitializeComponent();
        }

        void Handle_Scrolled(object sender, Xamarin.Forms.ScrolledEventArgs e)
        {
            if (previousScrollPosition < e.ScrollY)
            {
                //scrolled down
                Console.WriteLine("!!!!!!!!!scrolled down   ScrollY=>" + textScroll.ScrollY);
            }
            else
            {
                //scrolled up
                Console.WriteLine("!!!!!!!!!scrolled up   ScrollY=>" + textScroll.ScrollY);
            }
            previousScrollPosition = e.ScrollY;
        }

MainPage.xaml

<ContentPage.Content>
        <StackLayout>
            <BoxView BackgroundColor="Red" HeightRequest="200" WidthRequest="150" />
            <ScrollView x:Name="textScroll" Scrolled="Handle_Scrolled">
                <StackLayout>
                    <Entry Text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
                    <Entry Text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"/>
                    <Entry Text="ccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
                    <Entry Text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"/>
                    <Entry Text="eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"/>
                    <Entry Text="fffffffffffffffffffffffffffffffffffffffffff"/>
                    <Entry Text="ggggggggggggggggggggggggggggggggggggggggggggg"/>
                    <Entry Text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
                    <Entry Text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"/>
                    <Entry Text="ccccccccccccccccccccccccccccccccccccccccccccc"/>
                    <Entry Text="dddddddddddddddddddddddd"/>
                    <Entry Text="eeeeeeeeeeeeeeeeeeeeeeeeee"/>
                    <Entry Text="fffffffffffffffffffffffffffffffffffffffffff"/>
                    <Entry Text="ggggggggggggggggggggggggggggggggggggggggggggg"/>
                    <Entry Text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
                    <Entry Text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"/>
                    <Entry Text="ccccccccccccccccccccccccccccccccccccccccccccccccccc"/>
                    <Entry Text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"/>
                    <Entry Text="eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"/>
                    <Entry Text="fffffffffffffffffffffffffffffffffffffffffff"/>
                    <Entry Text="ggggggggggggggggggggggggggggggggggggggggggggg"/>
                    <Entry Text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
                    <Entry Text="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"/>
                    <Entry Text="ccccccccccccccccccccccccccccccccccccccccccccc"/>
                    <Entry Text="dddddddddddddddddddddddd"/>
                    <Entry Text="eeeeeeeeeeeeeeeeeeeeeeeeee"/>
                    <Entry Text="fffffffffffffffffffffffffffffffffffffffffff"/>
                    <Entry Text="ggggggggggggggggggggggggggggggggggggggggggggg"/>
                </StackLayout>
            </ScrollView>

        </StackLayout>

    </ContentPage.Content>
0 голосов
/ 19 февраля 2019

Попробуйте это:

private double previousScrollPosition = 0;
void Handle_Scrolled(object sender, Xamarin.Forms.ScrolledEventArgs e) 
{

  if (previousScrollPosition < e.ScrollY) 
  {
    //scrolled down
    previousScrollPosition = e.ScrollY;
  } 
  else 
  {
      //scrolled up

    if (Convert.ToInt16(e.ScrollY) == 0)
    previousScrollPosition = 0;

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...