iOS 上的同时平移手势识别
将 PanGestureRecognizer
附加到滚动视图内的视图时,PanGestureRecognizer
会捕获所有平移手势,并且不会传递到滚动视图。 因此,滚动视图将不再滚动。
此 iOS 平台特定功能可使滚动视图中的 PanGestureRecognizer
能够捕获平移手势并与滚动视图共享。 其使用方式为,在 XAML 中将 Application.PanGestureRecognizerShouldRecognizeSimultaneously
附加属性设置为 true
:
<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
将不会接收平移手势。