Я столкнулся с подобными проблемами при использовании UIPopoverController после того, как произошла ротация (размер UIPopoverController изменился странно, он переместился в странные места на экране и т. Д.).
Трюк, который сработал для меня, заключался в том, чтобы перегрузить метод URiewController didRotateFromOrientation: (UIInterfaceOrientation) в приложении. Так перегрузить метод из класса UIViewController своего приложения, что отображается, когда отображается UIPopoverController и вызова presentPopoverFromRect UIPopoverController в: метод снова оттуда:
-(void) didRotateFromOrientation:(UIInterfaceOrientation)uiOrientation {
if (popoverController.popoverVisible) {
// Define rect to be the UI component's rect where you want to tie the popoverController
CGRect rect = CGRectMake(...);
// This method will reposition the popover correctly
[popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO];
}
}
Обратите внимание, что если вы зафиксируете UIPopoverController к UIBarButtonItem с использованием UIPopoverController в presentPopoverFromBarButtonItem: метод, то система должна автоматически автоматически позаботиться о правильном позиционировании после поворота.
Пока нет, но можете ли вы сбросить рамку представления контроллера вида после поворота и показа? Возможно, что-то не работает/не устанавливается должным образом. –