ChildViewController / View не получает фокус с GMSMapView - PullRequest
0 голосов
/ 30 декабря 2018

Контекст : я хочу добиться чего-то похожего с Как можно имитировать нижний лист из приложения "Карты"? на основе https://github.com/grendio/XBottomSheet/tree/master/XBottomSheet.Samples/XBottomSheet.Touch

Проблема : если я использую BottomSheet с Google Maps для iOS View, он не позволяет перетаскивать BottomSheet вверх или вниз, даже если он добавляет (он виден на экране).

Код : Как уже упоминалось, у меня есть Google Maps View и мой BottomSheet View:

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        SetMap();
        SetBottomSheet();
    }

    private void SetMap()
    {
        var frame = new CGRect(0, View.Frame.GetMaxY(), View.Frame.Width, View.Frame.Height);
        mapView = new MapView(View.Frame);
        mapView.MyLocationEnabled = true;

        mapView.BuildingsEnabled = false;
        mapView.SetMinMaxZoom(15f, 18f);

        View = mapView;
    }

    private void SetBottomSheet()
    {
        var bottom = UIScreen.MainScreen.Bounds.Height - UIApplication.SharedApplication.StatusBarFrame.Height;
        bottomSheetViewController = new BottomSheetViewController(100, 300, bottom, true, BottomSheetState.Middle);

        AddChildViewController(bottomSheetViewController);
        View.AddSubview(bottomSheetViewController.View);
        bottomSheetViewController.DidMoveToParentViewController(this);

        bottomSheetViewController.View.Frame = new CGRect(0, View.Frame.GetMaxY(), View.Frame.Width, View.Frame.Height);
    }

Как я могу соединить эти два представления (mapView и bottomSheetViewController.View), чтобы не потерятьфункция перетаскивания вверх / вниз из элемента управления BottomSheet?

Даже если вопрос относится к Xamarin, ответ от swift или target-c подойдет точно так же, как я выполню «перевод» впоследствии.

1 Ответ

0 голосов
/ 31 декабря 2018

У меня был похожий проект, в то время я решил установить для свойства ConsumeGesturesInView значение false .

Таким образом, ваш SetMap () *Метод 1008 * должен выглядеть так:

private void SetMap()
{
    var frame = new CGRect(0, View.Frame.GetMaxY(), View.Frame.Width, View.Frame.Height);
    mapView = new MapView(View.Frame);
    mapView.MyLocationEnabled = true;
    mapView.Settings.ConsumeGesturesInView = false;
    mapView.BuildingsEnabled = false;
    mapView.SetMinMaxZoom(15f, 18f);

    View = mapView;
}
...