Udostępnij za pośrednictwem


Funkcja ScrollView dotyka zawartości 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 ten wieloplatformowy interfejs użytkownika aplikacji platformy .NET (.NET MAUI) kontroluje, czy ScrollView obsługuje gest dotykowy, 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:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls">
    <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 Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.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 Microsoft.Maui.Controls.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 Touches Platform-Specific.