2016-11-10 2 views
0

Для Xamarin.froms я создал всплывающее окно:фон жест распознаватель не работает КСН в xamarin.forms всплывать

и я использовал ShowPopup дать фон Всплывающие, так что если я щелкните за пределами Поуп Поуп будет закрыт, его прекрасно работать в 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..Gesture Recoginizer работает отлично подходит для фона Поупа для Android, но и для IOS Command = "{Binding} OnClosePopupCommand не вызывалось ..any предложения реализовать его

ответ

0

Вы, вероятно, нужно запустить этот команда на UI тему:

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

Спасибо за решение –

0

Вы должны стараться не использовать силу для Xamarin.Forms.Gesture распознования командного, а скорее резьбовой обработчик события. Вы должны легко сделать эту небольшую настройку. Команда устарела и не должна использоваться в будущем. Частично это связано с тем, что жесты работают по-разному между iOS и Android.

Важно помнить, что Жесты по-разному обрабатываются между Android и iOS. Xamarin.Android реализует жесты, используя IOnGestureListener, чтобы получить доступ к необходимой переопределению, где Xamarin.iOS имеет UIGestureRecognizer и UIGestureRecognizerDelegate для достижения аналогичного.

Игнорируйте ответ Дани ДаКура, потому что ваш код будет работать на UI-Thread. Можно с уверенностью предположить, что первая строка кода, поступающая из обработчика события управления пользовательским интерфейсом (или команды) в Xamarin, будет выполнена на основном UI-Thread. Это связано с тем, что обработчик событий ВСЕГДА вызывается из основного пользовательского интерфейса (в противном случае, как OS знал, что пользователь нажал этот жест?).

Надеюсь, это поможет!

Раскрытие: Я работаю Xamarin/Microsoft

+0

Спасибо за решение, и я постараюсь реализовать это в моем приложении. –

+0

Мне любопытно. Где вы видели, что команда устарела? Насколько я знаю, это неправда! Команда - это еще один способ обработки жестов/событий с помощью шаблона MVVM. –

Смежные вопросы