Udostępnij za pośrednictwem


ScrollView Content Touches w systemie iOS

Niejawny czasomierz jest wyzwalany po rozpoczęciu gestu dotykowego w ScrollView systemie iOS, a ScrollView decyzja zależy od akcji użytkownika w ramach przedziału czasomierza, niezależnie od tego, czy powinien obsługiwać gest, czy przekazywać go do jego zawartości. Domyślnie system iOS ScrollView opóźnia dotknięcie zawartości, ale może to powodować problemy w niektórych okolicznościach z zawartością ScrollView , która nie wygrywa gestu, gdy powinna. W związku z tym ta platforma określa, czy ScrollView uchwyt gestu dotykowego, czy przekazuje go do jego zawartości. Jest on używany w języku XAML przez ustawienie dołączonej ScrollView.ShouldDelayContentTouchesboolean właściwości na wartość:

<FlyoutPage ...
                  xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <FlyoutPage.Flyout>
        <ContentPage Title="Menu" BackgroundColor="Blue" />
    </FlyoutPage.Flyout>
    <FlyoutPage.Detail>
        <ContentPage>
            <ScrollView x:Name="scrollView" ios:ScrollView.ShouldDelayContentTouches="false">
                <StackLayout Margin="0,20">
                    <Slider />
                    <Button Text="Toggle ScrollView DelayContentTouches" Clicked="OnButtonClicked" />
                </StackLayout>
            </ScrollView>
        </ContentPage>
    </FlyoutPage.Detail>
</FlyoutPage>

Alternatywnie można go używać z poziomu języka C# przy użyciu płynnego interfejsu API:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

scrollView.On<iOS>().SetShouldDelayContentTouches(false);

Metoda ScrollView.On<iOS> określa, że ta platforma będzie działać tylko w systemie iOS. Metoda ScrollView.SetShouldDelayContentTouches w Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw służy do kontrolowania, czy ScrollView uchwyt gestu dotykowego, czy przekazuje go do jego zawartości. Ponadto SetShouldDelayContentTouches metoda może służyć do przełączania opóźniania dotykania zawartości przez wywołanie ShouldDelayContentTouches metody w celu zwrócenia, czy dotknięcia zawartości są opóźnione:

scrollView.On<iOS>().SetShouldDelayContentTouches(!scrollView.On<iOS>().ShouldDelayContentTouches());

Wynikiem jest to, że ScrollView element może wyłączyć opóźnienie odbierania dotknięcia zawartości, tak aby w tym scenariuszu Slider gest odbierał gest, a nie Detail stronę elementu FlyoutPage:

ScrollView Delay Content Dotyka platformy specyficznej dla platformy