#ios #xamarin #xamarin.forms #mvvmcross #master-detail
#iOS #xamarin #xamarin.forms #mvvmcross #мастер-деталь
Вопрос:
Короче говоря, я хочу отключить жест прокрутки в навигации для iOS в шаблоне MvvmCross по умолчанию. Было проведено множество исследований и испытаний, но безуспешно. Это для личного проекта с открытым исходным кодом, над которым я работаю. Спасибо!!!
Подробности: использование MvvmCross 7.1.6 (последняя версия от 1/21/2021). Я реализовал MvxContentPage. На странице есть 2 джойстика. На странице также включен гамбургер, который я хочу. При использовании приложения на телефоне при перемещении джойстика появляется всплывающее окно с левой навигацией. Я исследовал все, что смог найти, и добился успеха с Xamarin.Формы отключают жест, но в MvvmCross я не могу найти способ предотвратить слайд. Я знаю, что на других форумах были похожие сообщения, но не нашел ничего, что работает. Я смог создать пользовательский средство визуализации, используя сообщение Xamarin от 2016 года, но, похоже, оно не выполняется (код ниже). Я могу подтвердить, что средство визуализации вызвано.
using AstromechControl.iOS.CustomRenderers;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(AstromechControl.UI.Pages.JoystickPage), typeof(NoSwipeiOSCustomPageRenderer))]
namespace AstromechControl.iOS.CustomRenderers
{
public class NoSwipeiOSCustomPageRenderer : PageRenderer
{
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
UINavigationController navctrl = ViewController.NavigationController;
navctrl.InteractivePopGestureRecognizer.Enabled = false;
ViewController.SetNeedsUpdateOfScreenEdgesDeferringSystemGestures();
}
}
}
Комментарии:
1. Не могли бы вы попробовать
UINavigationController navctrl2 = this.NavigationController;
?2. @JackHua-MSFT спасибо за заметку, но нет, это не сработало … цените любые другие идеи!
Ответ №1:
Ну, если кто-то все еще пытается разобраться в этом в 2021 году… вот исправление … https://github.com/MvvmCross/MvvmCross/issues/2306
Используя мою комбинацию пользовательского средства визуализации страниц, опубликованную выше, и эту ссылку на github. В итоге я получил следующее:
using AstromechControl.iOS.CustomRenderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(AstromechControl.UI.Pages.JoystickPage), typeof(NoSwipeiOSCustomPageRenderer))]
namespace AstromechControl.iOS.CustomRenderers
{
public class NoSwipeiOSCustomPageRenderer : PageRenderer
{
public override void ViewDidAppear(bool animated)
{
if (Xamarin.Forms.Application.Current.MainPage is MasterDetailPage masterDetailPage)
{
masterDetailPage.IsGestureEnabled = false;
}
else if (Xamarin.Forms.Application.Current.MainPage is NavigationPage navigationPage amp;amp; navigationPage.CurrentPage is MasterDetailPage nestedMasterDetail)
{
nestedMasterDetail.IsGestureEnabled = false;
}
}
}
}