UIPopoverController отображается в неправильном месте - PullRequest
4 голосов
/ 16 сентября 2010

Я переключаю взгляды в окне.Ориентация иногда путается.

В одном из окон, когда я пытаюсь отобразить всплывающее окно, которое должно быть прикреплено к кнопке панели инструментов, оно отображается в месте на экране.Если я физически меняю ориентацию устройства, поповер перерисовывается в правильном месте.Если я снова включу его, он будет нарисован в правильном месте.Если я отклоню поповер и попытаюсь отобразить его снова, он снова отобразится в неправильном месте.

Предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Проблема ушла, не знаю почему. Я открыл проблему с поддержкой разработчиков Apple. Они просмотрели мой код и предложили пару недокументированных рекомендаций.

Нельзя было смешивать ориентации экрана между переключаемыми видами. Пусть они все последовательно поддерживают пейзаж или нет, портрет или нет.

Они также сказали, что только один контроллер должен одновременно управлять экраном.

Эта проблема возникла с iOS4.2 на iPad. Не знаю, применимо ли это больше.

1 голос
/ 20 июня 2011

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

    if(UIAppDelegate.intOrientation == 1)
    {
        popoverController.popoverContentSize = CGSizeMake(570, 720);
        [self.popoverController presentPopoverFromRect:CGRectMake(100, 150, 570, 720) inView:self.view permittedArrowDirections:NO animated:YES];
    }
    else
    {
        popoverController.popoverContentSize = CGSizeMake(820, 500);
        [self.popoverController presentPopoverFromRect:CGRectMake(102, 135, 820, 500) inView:self.view permittedArrowDirections:NO animated:YES];
    }
...