Problème
Dans mon iPad, je ne peux pas joindre une liste à un bouton de la barre d'élément seulement après la presse-et-organiser des événements. Mais ce qui semble être la norme pour annuler/refaire. Comment d'autres applications de ce faire?
Arrière-plan
J'ai un bouton annuler (UIBarButtonSystemItemUndo) dans la barre d'outils de mon UIKit (iPad) app. Lorsque j'appuie sur le bouton annuler, il déclenche un jeu d'action qui est annuler:, et qu'il s'exécute correctement.
Cependant, la "norme de l'UE de la convention" pour annuler/refaire sur iPad, c'est qu'en appuyant sur annuler exécute une opération d'annulation, mais en appuyant et en maintenant le bouton révèle une liste de contrôleur où l'utilisateur choisit "annuler" ou "refaire" jusqu'à ce que le contrôleur est rejeté.
La voie normale de joindre une liste contrôleur est avec presentPopoverFromBarButtonItem:, et je peux configurer ce assez facilement. Pour obtenir cette option pour afficher uniquement après avoir appuyé sur le bouton, nous avons la vue de répondre aux "appui long" événements de mouvement comme dans cet extrait:
UILongPressGestureRecognizer *longPressOnUndoGesture = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPressOnUndoGesture:)];
//Broken because there is no customView in a UIBarButtonSystemItemUndo item
[self.undoButtonItem.customView addGestureRecognizer:longPressOnUndoGesture];
[longPressOnUndoGesture release];
Avec cela, après une appuyez et maintenez sur le point de vue de la méthode handleLongPressOnUndoGesture: seront appelés, et que, dans cette méthode que j'ai de configurer et d'afficher la liste d'undo/redo. Pour l'instant, donc bon.
Le problème avec cela est qu'il n' est pas tenu à vous attacher. auto.undoButtonItem est un UIButtonBarItem, pas un point de vue.
Solutions possibles
1) [idéal] Joindre le geste de reconnaissance à la barre de boutons de l'élément. Il est possible de poser un geste de reconnaissance à vue, mais UIButtonBarItem n'est pas une vue. Il dispose d'une propriété pour .customView, mais que la propriété est nul lorsque le buttonbaritem est un système standard de type (dans ce cas c'est).
2) Utiliser un autre point de vue. Je pourrais utiliser le UIToolbar mais qui aurait besoin d'un peu bizarre hit-essais et d'être tout autour de hack, si possible en premier lieu. Il n'y a pas d'autre point de vue alternatif à l'utilisation que je peux penser.
3) Utiliser le customView de la propriété. Types Standard comme UIBarButtonSystemItemUndo ont pas customView (c'est nul). Réglage de la customView permet d'effacer le contenu standard dont il a besoin. Cela reviendrait à une re-mise en œuvre de toutes le look et la fonction de UIBarButtonSystemItemUndo, encore une fois si encore possible de le faire.
Question
Comment puis-je joindre un geste de reconnaissance pour ce "bouton"? Plus précisément, comment puis-je mettre en œuvre le standard appuyez sur et maintenez-pour-afficher-refaire-liste d'une application pour iPad?
Des idées? Merci beaucoup, surtout si quelqu'un a fait ce travail dans leur app (je pense à vous, omni) et veut partager...