Reconocimiento de gestos simultáneos de desplazamiento lateral en iOS
Cuando se adjunta PanGestureRecognizer
a una vista dentro de una vista de desplazamiento, todos los gestos de desplazamiento se capturan mediante PanGestureRecognizer
y no se pasan a la vista de desplazamiento. Por lo tanto, la vista de desplazamiento ya no se desplazará.
Esta característica específica de la plataforma iOS permite que un elemento PanGestureRecognizer
de una vista de desplazamiento capture y comparta el gesto de desplazamiento lateral con la vista de desplazamiento. Se consume en XAML estableciendo la propiedad adjunta Application.PanGestureRecognizerShouldRecognizeSimultaneously
en true
:
<Application ...
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
ios:Application.PanGestureRecognizerShouldRecognizeSimultaneously="true">
...
</Application>
Como alternativa, se puede consumir desde C# mediante la API fluida:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...
Xamarin.Forms.Application.Current.On<iOS>().SetPanGestureRecognizerShouldRecognizeSimultaneously(true);
El método Application.On<iOS>
especifica que esta plataforma específica solo se ejecutará en iOS. El método Application.SetPanGestureRecognizerShouldRecognizeSimultaneously
, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.iOSSpecific
, se usa para controlar si un reconocedor de gestos de desplazamiento lateral en una vista de desplazamiento capturará el gesto de desplazamiento lateral, o capturará y compartirá el gesto de desplazamiento lateral con la vista de desplazamiento. Además, el método Application.GetPanGestureRecognizerShouldRecognizeSimultaneously
se puede usar para devolver si el gesto de desplazamiento lateral se comparte con la vista de desplazamiento que contiene PanGestureRecognizer
.
Por lo tanto, con esta plataforma específica habilitada, cuando ListView
contiene PanGestureRecognizer
,ListView
y PanGestureRecognizer
recibirán el gesto de desplazamiento lateral y lo procesarán. Sin embargo, con esta plataforma específica deshabilitada, cuando ListView
contiene PanGestureRecognizer
, PanGestureRecognizer
capturará el gesto de desplazamiento lateral y lo procesará, y ListView
no recibirá el gesto de desplazamiento lateral.