2010-09-15 3 views
4

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

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

Предложения оценены.

+0

Здесь, когда вы показываете контроллер popover с точки зрения, сначала вам нужно проверить, какая у вас сейчас сейчас, и на основе ориентации вы можете выбрать рамку и открыть контроллер popover с текущего вида. Вы можете сделать следующее: if (UIAppDelegate.intOrientation == 1) [self.popoverController presentPopoverFromRect: CGRectMake (100,150,570,720) inView: self.view allowedArrowDirections: NO animated: YES]; еще [self.popoverController presentPopoverFromRect: CGRectMake (102,135,820,500) inView: self.view allowedArrowDirections: NO animated: YES]; – AppAspect

ответ

1

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

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]; 
    } 
1

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

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

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

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