Compartilhar via


Reconhecimento simultâneo de gestos panorâmicos no iOS

Quando a PanGestureRecognizer é anexado a uma exibição dentro de uma exibição de rolagem, todos os gestos de movimento panorâmico são capturados pelo PanGestureRecognizer e não são passados para a exibição de rolagem. Portanto, a visualização de rolagem não rolará mais.

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

<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 método Application.On<iOS> 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 panorâmicos em um modo de exibição de rolagem capturará o gesto panorâmico ou capturará e compartilhará o gesto panorâmico 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 movimento panorâmico é compartilhado com o modo de exibição de rolagem que contém o PanGestureRecognizer.

Portanto, com esse específico da plataforma habilitado, quando a ListView contém um PanGestureRecognizer, tanto o quanto o ListView PanGestureRecognizer receberão o gesto de movimento panorâmico e o processarão. No entanto, com esse específico da plataforma desabilitado, quando a ListView contém um PanGestureRecognizer, o capturará PanGestureRecognizer o gesto de movimento panorâmico e o processará, e ListView não receberá o gesto de movimento panorâmico.