iOS での同時パン ジェスチャの認識
PanGestureRecognizer
がスクロール ビュー内のビューにアタッチされている場合、すべてのパン ジェスチャは、PanGestureRecognizer
によってキャプチャされ、スクロール ビューに渡されません。 したがって、スクロール ビューはスクロールしなくなります。
この iOS プラットフォーム固有設定を使用すると、PanGestureRecognizer
はスクロール ビューでパン ジェスチャをキャプチャし、スクロール ビューと共有できます。 Application.PanGestureRecognizerShouldRecognizeSimultaneously
添付プロパティを true
に設定することで、XAML で使用されます。
<Application ...
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
ios:Application.PanGestureRecognizerShouldRecognizeSimultaneously="true">
...
</Application>
または、Fluent API を使用して C# から使用することもできます。
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...
Xamarin.Forms.Application.Current.On<iOS>().SetPanGestureRecognizerShouldRecognizeSimultaneously(true);
Application.On<iOS>
メソッドは このプラットフォーム固有の機能が iOS でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.iOSSpecific
名前空間内の Application.SetPanGestureRecognizerShouldRecognizeSimultaneously
メソッドは、スクロール ビューのパン ジェスチャ認識エンジンがパン ジェスチャをキャプチャするか、またはパン ジェスチャをキャプチャしてスクロール ビューと共有するかを制御するために使用されます。 さらに、Application.GetPanGestureRecognizerShouldRecognizeSimultaneously
メソッドを使用して、パン ジェスチャが PanGestureRecognizer
を含むスクロール ビューと共有されるかどうかを返すことができます。
したがって、このプラットフォーム固有の機能を有効にすると、ListView
が PanGestureRecognizer
を含む場合、ListView
と PanGestureRecognizer
の両方がパン ジェスチャを受け取り、処理します。 ただし、このプラットフォーム固有の機能を無効にすると、ListView
が PanGestureRecognizer
を含む場合、PanGestureRecognizer
でパン ジェスチャがキャプチャされて処理され、ListView
はパン ジェスチャを受け取りません。