Reconhecimento simultâneo de gestos de painel no iOS
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 true
anexada 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.