UIPopoverController с MonoTouch.Dialog приводит к нежелательному изменению размера popover - PullRequest
2 голосов
/ 07 февраля 2012

Я использую MonoTouch.Dialog в UIPopoverController, чтобы дать нашим пользователям iPad ряд настроек для работы.В моем приложении я использую этот CalendarView (http://escoz.com/blog/monotouch-calendar-control-is-here/), чтобы пользователь мог устанавливать даты для приложения (параметры используются для настройки временных местоположений на карте Google).

В любом случае, у меня возникли некоторые проблемы с размерамиотносительно UIPopoverController ... Независимо от того, как я устанавливаю размер контента, как только я щелкаю глубже в дерево .Dialog, UIPopoverController изменяет размеры, что вызывает нежелательное изменение размеров в указанном представлении календаря.

В приложении приведен образециз того, что я вижу. Вы заметите, у меня есть контент размером 450x420. Как только я нажимаю на любой из вариантов, поповер изменяет размеры сам. Я хочу, чтобы этот поповер всегда оставался неизменным по размеру.

Я что-то упускаю здесь очевидное? Любая помощь будет высоко ценится.

Объявляет и запускает popover из myPopOverView.cs:

UIPopoverController myPopOver = new UIPopoverController(new myPopOverView()); 

btnSearch.TouchUpInside += (sender, e) => {
   myPopOver.PopoverContentSize = new SizeF(450f, 420f);
   myPopOver.PresentFromRect (btnPopOver.Frame, this.View, UIPopoverArrowDirection.Down, true);
}   

из myPopOverView.cs:

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

  var root = CreateRoot ();

  var dv = new DialogViewController (root, true);
  this.PushViewController (dv, true);
}

RootElement CreateRoot ()
    {

        return new RootElement ("Find Stuff") {
                new Section (){
                    new RootElement ("States", new RadioGroup (0)){
                        new Section (){
                            new RadioElement ("New York"),
                            new RadioElement ("California"),
                            new RadioElement ("Texas"), 
                        }
                    }  , 
                }  ,
                new Section (){
                    new RootElement ("Places", new RadioGroup (0)){
                        new Section (){
                            new RadioElement ("New York City"),
                            new RadioElement ("San Francisco"),
                            new RadioElement ("Dallas"), 
                        }
                    }  , 
                }  ,
                new Section (){
                    new RootElement ("Products") {
                            from sh in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
                                select new Section (sh + " - Section") {
                                   from filler in "12345" 
                                    select (Element) new CheckboxElement (sh + " - " + filler, true, "kb")
                            }

                    }  , 
                }  

        }  ;        
    }

1 Ответ

1 голос
/ 07 февраля 2012

Каждый раз, когда TopViewController изменяется, UIPopoverController будет пытаться автоматически согласовать его ContentSize.

Вы должны установить ContentSizeForViewInPopover для каждого представляемого UIViewController, переопределив метод WillShowViewController и установив там SizeF.

...