закрыть UIPopoverController (если он виден) после нажатия UIBarButtonItem - PullRequest
1 голос
/ 01 июля 2010

Я пытаюсь отклонить все видимые в настоящее время контроллеры UIPopoverController, если / когда другой UIBarButtonItem нажат, как видно на страницах для iPad, при переходе между стилями / медиа / инструментами и т. Д.

Я сделал это, но это слишком конкретно. Ищете что-то общее.

if ([popoverController isPopoverVisisble]) {
[popoverController dismissPopoverAnimated:YES];
}

Спасибо!

Ответы [ 3 ]

2 голосов
/ 16 июля 2010

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

1 голос
/ 06 апреля 2011

randallmeadows ответ НЕ будет работать.UIBarButtonItem не является потомком UIView, что означает, что вы не можете добавить его в passthroughViews.

Единственное решение, которое я сейчас нашел, - это создать UIBarButtonItem с пользовательским UIButton, используя

   UIBarButtonItem *b =  [[UIBarButtonItem alloc] initWithCustomView:button]

, а затем

 popoverController.passthroughViews = [NSArray arrayWithObject:b.customView];

Но будьте готовы, что вы потеряете все стили - вы не можете создать UIButton, который выглядит как UIBarButtoItem слишком легко.

0 голосов
/ 16 октября 2013
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.passthroughViews = @[];

У меня работает

...