iOS 上的同步平移手势识别
将 PanGestureRecognizer 附加到滚动视图内的视图时,PanGestureRecognizer 会捕获所有平移手势,并且不会传递到滚动视图。 因此,滚动视图将不再滚动。
此 .NET Multi-platform App UI (.NET MAUI) iOS 平台特定功能可支持滚动视图中的 PanGestureRecognizer 捕获平移手势并将其与滚动视图共享。 其使用方式为,在 XAML 中将 Application.PanGestureRecognizerShouldRecognizeSimultaneously
附加属性设置为 true
:
<Application ...
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
ios:Application.PanGestureRecognizerShouldRecognizeSimultaneously="true">
...
</Application>
或者,可以使用 Fluent API 从 C# 使用它:
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...
Application.Current.On<iOS>().SetPanGestureRecognizerShouldRecognizeSimultaneously(true);
Application.On<iOS>
方法指定此平台特定功能将仅在 iOS 上运行。 Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific
命名空间中的 Application.SetPanGestureRecognizerShouldRecognizeSimultaneously
方法用于控制滚动视图中的平移手势识别器是捕获平移手势,还是捕获平移手势并将其与滚动视图共享。 此外,Application.GetPanGestureRecognizerShouldRecognizeSimultaneously
方法还可用于返回是否与包含 PanGestureRecognizer 的滚动视图共享平移手势的结果。
因此,启用此平台特定功能后,当 ListView 包含 PanGestureRecognizer 时,ListView 和 PanGestureRecognizer 都将接收平移手势并对其进行处理。 但是,如果禁用此平台特定功能,当 ListView 包含 PanGestureRecognizer 时,PanGestureRecognizer 将捕获平移手势并对其进行处理,而 ListView 将不会接收平移手势。