对于Xamarin.froms,我创建了一个弹出窗口:
我已经使用ShowPopup为弹出窗口提供了背景,所以如果我点击外面poup poup将被关闭,它在xamarin.android中工作正常但是对于IOS手势Rcognizer for Background视图不起作用如果我有一个弹出窗口顶部背景视图
<StackLayout x:Name="ShowPopups" Padding="0" BackgroundColor="#99000000" HorizontalOptions="FillAndExpand" IsVisible="{Binding ShowPopup}" VerticalOptions="FillAndExpand">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding OnClosePopupCommand}" />
</StackLayout.GestureRecognizers>
</StackLayout>
用于Xamarin.forms中的后台弹出窗口.Gesture Recoginizer适用于android的后台程序,但是对于IOS Command =&#34; {Binding OnClosePopupCommand}没有被调用..实现它的任何建议
答案 0 :(得分:0)
您可能需要在UI Thread上运行此命令:
Device.BeginInvokeOnMainThread(() =>
{
run your OnClosePopupCommand here
});
答案 1 :(得分:-2)
您应该尝试不将命令绑定用于Xamarin.Forms.Gesture识别器,而是使用Tapped事件处理程序。您应该能够轻松地进行轻微调整。命令已被弃用,不应该继续使用。部分原因是因为iOS和Android之间的手势不同。
重要的是要记住,Android和iOS之间的手势基本上是不同的。 Xamarin.Android通过利用IOnGestureListener来访问必要的覆盖来实现手势,其中Xamarin.iOS具有UIGestureRecognizer和UIGestureRecognizerDelegate来完成类似操作。
忽略Dany DaKur的答案,因为您的代码将在UI-Thread上运行。可以安全地假设来自Xamarin中的UI控件事件处理程序(或Command)的第一行代码将在主UI-Thread上执行。这是因为事件处理程序总是从主UI-Thread调用(否则OS会如何知道用户点击了手势?)。
我希望这有帮助!
披露:我为Xamarin / Microsoft工作