Udostępnij za pośrednictwem


Jednoczesne rozpoznawanie gestów pan w systemie iOS

Gdy element PanGestureRecognizer jest dołączony do widoku wewnątrz widoku przewijania, wszystkie gesty przesuwania są przechwytywane przez PanGestureRecognizer element i nie są przekazywane do widoku przewijania. W związku z tym widok przewijania nie będzie już przewijany.

Ta platforma systemu iOS umożliwia PanGestureRecognizer przechwytywanie i udostępnianie gestu przewijania w widoku przewijania za pomocą widoku przewijania. Jest on używany w języku XAML przez ustawienie dołączonej Application.PanGestureRecognizerShouldRecognizeSimultaneously właściwości na wartość true:

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

Alternatywnie można go używać z poziomu języka C# przy użyciu płynnego interfejsu API:

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

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

Metoda Application.On<iOS> określa, że ta platforma będzie działać tylko w systemie iOS. Metoda Application.SetPanGestureRecognizerShouldRecognizeSimultaneously , w Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw, służy do kontrolowania, czy rozpoznawanie gestów przesuwania w widoku przewijania przechwytuje gest pan lub przechwytuje i udostępnia gest patelni z widokiem przewijania. Ponadto można użyć metody w celu zwrócenia, Application.GetPanGestureRecognizerShouldRecognizeSimultaneously czy gest przesuwania jest udostępniany z widokiem przewijania zawierającym PanGestureRecognizerelement .

W związku z tym, w przypadku włączenia tej platformy, gdy element ListView zawiera , zarówno ListView , jak i PanGestureRecognizer otrzyma gest pan i PanGestureRecognizerprzetworzy go. Jednak po wyłączeniu tej platformy, gdy element ListView zawiera element , PanGestureRecognizer funkcja przechwytuje gest patelni i przetwarza go, a ListView nie otrzyma PanGestureRecognizergestu pan.