2016-11-10 27 views
0

對於Xamarin.froms我創建了一個彈出:背景手勢識別不xamarin.forms工作IOS彈出

,我已經使用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工作正常爲背景poup爲android但IOS命令=「{綁定OnClosePopupCommand}沒有得到調用..任何建議來實現它

回答

0

您可能需要運行此在UI線程命令:

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

感謝解決方案 –

0

你應該儘量不要使用命令Xamarin.Forms.Gesture識別器結合,而是螺紋事件處理程序。你應該能夠輕鬆地進行輕微的調整。命令已被棄用,不應繼續使用。部分原因是iOS和Android手勢的工作方式不同。

重要的是要記住手勢在Android和iOS之間的基本處理方式是不同的。 Xamarin.Android通過利用IOnGestureListener訪問必要的覆蓋來實現手勢,其中Xamarin.iOS具有UIGestureRecognizer和UIGestureRecognizerDelegate來完成類似操作。

忽略Dany DaKur的答案,因爲您的代碼將在UI線程上運行。假設來自Xamarin中的UI控件事件處理程序(或Command)的第一行代碼將在主UI線程上執行是安全的。這是因爲事件處理程序總是從主UI線程調用(否則操作系統如何知道用戶單擊了該手勢?)。

我希望這有助於!

披露:我對Xamarin /微軟工作

+0

感謝解決方案,我將盡力實現它在我的應用程序。 –

+0

我很好奇。你在哪裏看到Command已被棄用?據我所知這不是真的!命令是用MVVM模式處理手勢/事件的另一種方式。 –