Freigeben über


Gleichzeitige Verschiebungsgestenerkennung unter iOS

Wenn eine PanGestureRecognizer-Ansicht in einer Bildlaufansicht an eine Ansicht angefügt ist, werden alle Schwenkbewegungen von dem PanGestureRecognizer erfasst und nicht an die Bildlaufansicht übergeben. Daher wird der Bildlauf in der Bildlaufansicht nicht mehr gescrollt.

Diese plattformspezifische iOS-Plattform ermöglicht es einer PanGestureRecognizer Bildlaufansicht, die Verschiebungsgeste mit der Bildlaufansicht zu erfassen und freizugeben. Sie wird in XAML genutzt, indem die angefügte Application.PanGestureRecognizerShouldRecognizeSimultaneously-Eigenschaft auf true festgelegt wird:

<Application ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             ios:Application.PanGestureRecognizerShouldRecognizeSimultaneously="true">
    ...
</Application>

Alternativ kann sie mit der Fluent-API von C# genutzt werden:

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

Xamarin.Forms.Application.Current.On<iOS>().SetPanGestureRecognizerShouldRecognizeSimultaneously(true);

Die Application.On<iOS>-Methode gibt an, dass diese plattformspezifisch nur unter iOS ausgeführt wird. Die Application.SetPanGestureRecognizerShouldRecognizeSimultaneously-Methode im Xamarin.Forms.PlatformConfiguration.iOSSpecific-Namespace wird verwendet, um zu steuern, ob eine Schwenkerkennung in einer Bildlaufansicht die Schwenkbewegung erfasst oder die Schwenkbewegung mit der Bildlaufansicht erfasst und gemeinsam verwendet. Darüber hinaus kann die Application.GetPanGestureRecognizerShouldRecognizeSimultaneously-Methode verwendet werden, um zurückzugeben, ob die Schwenkbewegung für die Bildlaufansicht freigegeben wird, die den PanGestureRecognizer enthält:

Wenn diese plattformspezifische Funktion aktiviert ist und ein ListView ein PanGestureRecognizer enthält, empfangen sowohl ListView als auch PanGestureRecognizer die Schwenkbewegung und verarbeiten sie. Wenn diese plattformspezifische Funktion jedoch deaktiviert ist und ein ListView ein PanGestureRecognizer enthält, empfängt und verarbeitet PanGestureRecognizer die Schwenkbewegung und ListView empfängt die Schwenkbewegung nicht.