Toques de conteúdo do ScrollView no iOS

Um temporizador implícito é disparado quando um gesto de toque começa em um ScrollView no iOS e o ScrollView decide, com base na ação do usuário durante a duração do temporizador, se deve manipular o gesto ou passá-lo para seu conteúdo. Por padrão, o iOS ScrollView atrasa toques de conteúdo, mas isso pode causar problemas em algumas circunstâncias, com o ScrollView conteúdo não ganhando o gesto quando deveria. Portanto, essa interface do usuário de aplicativo multiplataforma do .NET (.NET MAUI) determina se o ScrollView deve manipular um gesto de toque ou repassa para seu conteúdo. Ele é consumido em XAML definindo a propriedade acoplada ScrollView.ShouldDelayContentTouches para um valor boolean:

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

Alternativamente, pode ser consumido do C# usando fluent API.

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

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

O ScrollView.On<iOS> método especifica que essa plataforma específica só será executada no iOS. O método ScrollView.SetShouldDelayContentTouches, no namespace Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific, é usado para controlar se um ScrollView manipula um gesto de toque ou o passa para seu conteúdo. Além disso, o SetShouldDelayContentTouches método pode ser usado para alternar o atraso de toques de conteúdo chamando o ShouldDelayContentTouches método para retornar se os toques de conteúdo estão atrasados:

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

O resultado é que ScrollView pode desabilitar o atraso no recebimento de toques de conteúdo, de modo que, nesse cenário, o gesto seja recebido pelo Slider em vez da página do DetailFlyoutPage.

O atraso de ScrollView toca o conteúdo específico da plataforma.