2010-11-20 2 views
0

У меня есть UITabBarController внутри UIPopoverController, который я показываю исключительно из одного UIBarButtonItem. Когда показано, я хочу, чтобы popover занимал максимальную вертикальную высоту. Он отлично работает, если я нажимаю, чтобы отобразить его, затем отпустите, а затем поверните. Однако, если у меня есть popover, отображаемый в ландшафте, а затем поверните его на портрет, он больше не будет заполнять все вертикальное расстояние. У меня есть свойство размера содержимого контроллера панели на 320 на 1000, и я даже попытался сбросить его каждый раз, когда устройство вращается. Хуже того, когда пользователь активирует панель поиска, popover становится очень маленьким и остается таким, пока приложение не будет перезапущено.Popover resizing erraticly

http://cl.ly/3JdC в http://cl.ly/3JdC

Также http://cl.ly/3JVF

Как я могу остановить это, и есть поповер всегда заполняют максимальный вертикальный размер?

ответ

1

Я просто с той же проблемой и выяснили, что это происходит только тогда, когда я представляю UIPopoverController с помощью метода:

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

, но он отлично работает, когда я использую:

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

К сожалению UIBarButtonItem не имеет рамки Rect, которую вы можете использовать с этим последним методом, поэтому мое исправление должно было использовать фрейм UIToolbar и изменить frame.origin.x и frame.size.width соответственно, чтобы сделать всплывающее окно в нужном месте рядом с UIBarButtonItem.

Надеюсь, Apple исправит это в следующих выпусках iOS.

Привет

+2

Я поставил 'self.contentSizeForViewInPopover = CGSizeMake (0, 0); self.contentSizeForViewInPopover = CGSizeMake (320, 1000); 'в метод' -viewDidAppear: ', и это также сработало. Хотя это похоже на хак. – axiixc