Sdílet prostřednictvím


Obsah ScrollView se dotkne v iOSu

Implicitní časovač se aktivuje, když gesto dotykového ovládání začíná v ScrollView iOSu a ScrollView rozhodne se na základě akce uživatele v časovém intervalu, ať už má gesto zpracovat nebo předat jeho obsahu. Ve výchozím nastavení se obsah iOS ScrollView zpožďuje, ale může to v některých případech způsobit problémy s obsahem ScrollView , který nevyhraje gesto, když by měl. Proto toto uživatelské rozhraní .NET Multi-Platform App UI (.NET MAUI) řídí, jestli ScrollView úchyty gesto dotykového ovládání nebo předá jeho obsah. Využívá se v XAML nastavením ScrollView.ShouldDelayContentTouches připojené vlastnosti na boolean hodnotu:

<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>

Alternativně ho můžete využívat z jazyka C# pomocí rozhraní FLUENT API:

using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...

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

Metoda ScrollView.On<iOS> určuje, že se tato platforma bude spouštět pouze v iOSu. Metoda ScrollView.SetShouldDelayContentTouches v Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific oboru názvů slouží k řízení, zda ScrollView úchyty gesto dotykového ovládání nebo předá jeho obsah. Kromě toho SetShouldDelayContentTouches lze metodu použít k přepnutí zpoždění obsahu dotyky voláním ShouldDelayContentTouches metody, která vrátí, zda jsou dotyky obsahu zpožděné:

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

Výsledkem je, že ScrollView může zakázat zpoždění příjmu obsahu dotek, takže v tomto scénáři Slider obdrží gesto místo Detail stránky FlyoutPage:

ScrollView Delay Content Touches Platform-Specific.