Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml xamarin.forms弹出窗口中的后台手势识别器不适用于ios_Xaml_Xamarin_Xamarin.ios_Xamarin.forms_Xamarin Studio - Fatal编程技术网

Xaml xamarin.forms弹出窗口中的后台手势识别器不适用于ios

Xaml xamarin.forms弹出窗口中的后台手势识别器不适用于ios,xaml,xamarin,xamarin.ios,xamarin.forms,xamarin-studio,Xaml,Xamarin,Xamarin.ios,Xamarin.forms,Xamarin Studio,对于Xamarin.froms,我创建了一个弹出窗口: 我使用ShowPopup为弹出窗口提供背景,因此,如果我在弹出窗口外单击,popup将关闭,它在xamarin.android中工作正常,但对于IOS手势,如果我在背景视图顶部有一个弹出窗口,则背景视图的Rcognizer不工作 <StackLayout x:Name="ShowPopups" Padding="0" BackgroundColor="#99000000" HorizontalOptions="FillAndExp

对于Xamarin.froms,我创建了一个弹出窗口:

我使用ShowPopup为弹出窗口提供背景,因此,如果我在弹出窗口外单击,popup将关闭,它在xamarin.android中工作正常,但对于IOS手势,如果我在背景视图顶部有一个弹出窗口,则背景视图的Rcognizer不工作

<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中的后台弹出窗口..手势识别器对于android的后台弹出窗口工作正常,但对于IOS命令=“{Binding OnClosePopupCommand}未被调用..任何实现它的建议

您可能需要在UI线程上运行此命令:

Device.BeginInvokeOnMainThread(() =>
 { 
   run your OnClosePopupCommand here
 });

您不应该尝试使用Xamarin.Forms.signature Recognizers的命令绑定,而应该使用Tapped事件处理程序。您应该能够轻松地进行这一细微的调整。该命令已被弃用,不应继续使用。部分原因是手势在iOS和Android之间的工作方式不同

重要的是要记住,在Android和iOS之间,手势的处理方式基本上是不同的。Xamarin。Android通过使用访问必要的覆盖来实现手势,Xamarin.iOS具有和UIGestureRecognitzerDelegate来完成类似的操作

忽略Dany DaKur的回答,因为您的代码将在UI线程上运行。可以安全地假设来自Xamarin中UI控件事件处理程序(或命令)的第一行代码将在主UI线程上执行。这是因为事件处理程序始终从主UI线程调用(否则,操作系统如何知道用户点击了手势?)

我希望这有帮助


披露:我为Xamarin/Microsoft工作

感谢您的解决方案感谢您的解决方案,我将尝试在我的应用程序中实现它。我很好奇。您在哪里看到命令被弃用?据我所知,这不是真的!命令只是使用MVVM模式处理手势/事件的另一种方式。