Share via


Touches de contenu ScrollView sur iOS

Un minuteur implicite est déclenché lorsqu’un mouvement tactile commence dans un ScrollView iOS et que le ScrollView choix est basé sur l’action de l’utilisateur dans l’intervalle du minuteur, qu’il doit gérer le mouvement ou le transmettre à son contenu. Par défaut, l’iOS ScrollView retarde les touches de contenu, mais cela peut entraîner des problèmes dans certaines circonstances avec le ScrollView contenu qui ne gagne pas le mouvement quand il doit. Par conséquent, cette plateforme contrôle si un ScrollView geste tactile est géré ou transmis à son contenu. Elle est consommée en XAML en définissant la ScrollView.ShouldDelayContentTouches propriété jointe sur une boolean valeur :

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

Elle peut également être consommée à partir de C# à l’aide de l’API Fluent :

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

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

La ScrollView.On<iOS> méthode spécifie que cette plateforme ne s’exécutera que sur iOS. La ScrollView.SetShouldDelayContentTouches méthode, dans l’espace Xamarin.Forms.PlatformConfiguration.iOSSpecific de noms, est utilisée pour contrôler si une poignée gère un ScrollView mouvement tactile ou la transmet à son contenu. En outre, la SetShouldDelayContentTouches méthode peut être utilisée pour désactiver le décalage des touches de contenu en appelant la ShouldDelayContentTouches méthode pour retourner si les touches de contenu sont retardées :

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

Le résultat est qu’un ScrollView peut désactiver le retard de réception des touches de contenu, de sorte que dans ce scénario, le Slider mouvement reçoit plutôt que la Detail page du FlyoutPage:

ScrollView Delay Content Touches spécifique à la plateforme