Reconhecimento simultâneo de gestos de painel no iOS

Baixar exemplo Baixar o exemplo

Quando um PanGestureRecognizer é anexado a uma exibição dentro de uma exibição de rolagem, todos os gestos da panela são capturados pelo PanGestureRecognizer e não são passados para o modo de exibição de rolagem. Portanto, a exibição de rolagem não rolará mais.

Essa plataforma iOS específica permite que um PanGestureRecognizer em um modo de exibição de rolagem capture e compartilhe o gesto de painel com o modo de exibição de rolagem. Ele é consumido em XAML definindo a Application.PanGestureRecognizerShouldRecognizeSimultaneously propriedade trueanexada como :

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

Como alternativa, ele pode ser consumido do C# usando a API fluente:

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

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

O Application.On<iOS> método especifica que essa plataforma específica só será executada no iOS. O Application.SetPanGestureRecognizerShouldRecognizeSimultaneously método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, é usado para controlar se um reconhecedor de gestos de painel em um modo de exibição de rolagem capturará o gesto da panela ou capturará e compartilhará o gesto da panela com o modo de exibição de rolagem. Além disso, o Application.GetPanGestureRecognizerShouldRecognizeSimultaneously método pode ser usado para retornar se o gesto de painel é compartilhado com a exibição de rolagem que contém o PanGestureRecognizer.

Portanto, com essa plataforma específica habilitada, quando um ListView contém um PanGestureRecognizer, o ListView e o receberão o gesto do painel e o PanGestureRecognizer processarão. No entanto, com essa plataforma específica desabilitada, quando um ListView contém um PanGestureRecognizer, o PanGestureRecognizer capturará o gesto da panela e o processará e o ListView não receberá o gesto de painel.