Gleichzeitige Schwenkgestenerkennung unter iOS

Beispiel herunterladen Das Beispiel herunterladen

Wenn eine PanGestureRecognizer in einer Bildlaufansicht an eine Ansicht angefügt ist, werden alle Schwenkgesten von PanGestureRecognizer erfasst und nicht an die Bildlaufansicht übergeben. Daher wird die Bildlaufansicht nicht mehr scrollen.

Mit dieser plattformspezifischen iOS-Funktion kann in PanGestureRecognizer einer Bildlaufansicht die Schwenkbewegung erfasst und mit der Bildlaufansicht gemeinsam verwendet werden. Sie wird in XAML verwendet, indem die Application.PanGestureRecognizerShouldRecognizeSimultaneously angefügte Eigenschaft auf truefestgelegt wird:

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

Alternativ kann es über C# mithilfe der Fluent-API verwendet 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 plattformspezifische Nur unter iOS ausgeführt wird. Die Application.SetPanGestureRecognizerShouldRecognizeSimultaneously -Methode im Xamarin.Forms.PlatformConfiguration.iOSSpecific -Namespace wird verwendet, um zu steuern, ob eine Schwenkgestenerkennung 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 PanGestureRecognizerenthält.

Wenn also diese plattformspezifische Aktivierung aktiviert ist, ListViewPanGestureRecognizererhalten sowohl die als auch die ListViewPanGestureRecognizer die Schwenkbewegung und verarbeiten sie. Wenn diese plattformspezifische Option deaktiviert ist, wird jedoch, wenn ein ListView eine PanGestureRecognizerenthält, die PanGestureRecognizer die Schwenkbewegung erfassen und verarbeiten, und der ListView empfängt die Schwenkgeste nicht.