UIPopoverController отображается в неправильном месте

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

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

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


person David    schedule 15.09.2010    source источник
comment
Здесь, когда вы отображаете всплывающий контроллер из представления, сначала вам нужно проверить, какая ориентация у вас есть сейчас, и на основе ориентации вы можете выбрать фрейм и открыть всплывающий контроллер из текущего представления. Вы можете сделать это следующим образом: еще [self.popoverController presentPopoverFromRect: CGRectMake (102 135 820 500) inView: self.view AllowedArrowDirections: НЕТ анимированных: ДА];   -  person AppAspect    schedule 20.06.2011


Ответы (2)


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

    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];
    }
person AppAspect    schedule 20.06.2011

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

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

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

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

person David    schedule 23.11.2011