2010-06-30 25 views
1

Je suis en train de rejeter des UIPopoverControllers actuellement visibles si/quand un autre UIBarButtonItem est exploité comme on le voit sur les pages pour l'iPad lorsque vous tapez entre Styles/Médias/Outils etc.rejeter UIPopoverController (si elle est visible) après avoir tapé un UIBarButtonItem

J'ai fait ça, mais c'est trop spécifique. Vous cherchez quelque chose de générique.

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

Merci!

Répondre

2

Avez-vous défini la propriété passthroughViews du contrôleur popover? Si vous faites cela, puis tape en dehors de le Popover ne provoquera pas automatiquement le popover, mais sera plutôt envoyé aux vues dans ce tableau. Vous devriez être en mesure d'ajouter le UIBarButtonItem à ce tableau, puis de rejeter le popover dans ce gestionnaire.

1

La réponse de randallmeadows ne fonctionnera PAS. UIBarButtonItem n'est pas descendant de UIView, ce qui signifie que vous ne pouvez pas l'ajouter à passthroughViews.

La seule solution que je trouve pour est maintenant de créer UIBarButtonItem avec la coutume UIButton utilisant

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

puis

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

Mais soyez prêt que vous perdrez tout le style - vous ne pouvez pas créer UIButton qui ressemble à UIBarButtoItem trop facilement.

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

Works pour moi