2010-06-30 10 views
1

Я пытаюсь отклонить любые видимые в данный момент UIPopoverControllers, если/когда другой UIBarButtonItem сливают, как видно на страницах для IPad при касании между стилями/СМИ/инструменты и т.д.уволить UIPopoverController (если видимый) после нажатия на UIBarButtonItem

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

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

Спасибо!

ответ

2

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

1

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

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

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

, а затем

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

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

0
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
popoverController.passthroughViews = @[]; 

Работы для меня