背景手势识别器不工作在xamarin.forms弹出窗口中的ios

时间:2016-11-10 07:59:01

标签: xaml xamarin xamarin.ios xamarin.forms xamarin-studio

对于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}没有被调用..实现它的任何建议

2 个答案:

答案 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工作