Я столкнулся с подобными проблемами при использовании UIPopoverController после того, как произошло вращение (размер UIPopoverController изменился странным образом, он переместился в странные места на экране и т. Д.).
Уловка, которая сработала для меня, состояла в том, чтобы перегрузить метод didRotateFromOrientation: (UIInterfaceOrientation) UIViewController в приложении.Поэтому перегрузите метод из класса 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 с методом UIBarButtonIontrolIPopopPerverIpt с помощью UIPПосле этого система должна автоматически позаботиться о правильном позиционировании поповера после поворота.