Comment avez-vous VRAIMENT supprimer la Copie de UIMenuController

Il semble être un moyen facile pour éviter le "Plus..." étiquette figurant dans UIMenuController lorsque vous avez ajouté plus d'un élément de menu personnalisé. Vous avez juste eu à enlever tous les éléments de menu système. Il y avait même un solution de contournement pour toujours avoir de la copie de travail. Vous avez juste eu à mettre en œuvre une copie personnalisée de commande à l'aide d'un autre sélecteur, puis remplacer canPerformAction:withSender: pour ne pas montrer le système de copie:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{
    if (action == @selector(copy:))
       return NO;
    else
       //logic to show or hide other things
}

Malheureusement, cette méthode ne fonctionne plus (au moins dans une UIWebView sous-classe). canPerformAction:withSender: est appelé pour chaque option de menu de système à l'exception de copie: si le résultat est que le système de copie de l'élément de menu est affichée en permanence. Cela signifie que si vous avez plus d'un élément de menu personnalisé, ils sont toujours cachés derrière les "Plus..."

Donc, est-il un moyen de vraiment supprimer le système de la copie ou de l'élément de quelque autre façon à empêcher les éléments de menu à partir se cacher derrière les "Plus..."?

Mise à jour

C'est le résultat que j'obtiens quand je remplace canPerformAction:withSender: notez que la méthode n'est jamais appelé à la "copie:" action:

cannot perform action cut: with sender <UIMenuController: 0x7227d30>.
cannot perform action select: with sender <UIMenuController: 0x7227d30>.
cannot perform action selectAll: with sender <UIMenuController: 0x7227d30>.
cannot perform action paste: with sender <UIMenuController: 0x7227d30>.
cannot perform action delete: with sender <UIMenuController: 0x7227d30>.
cannot perform action promptForReplace: with sender <UIMenuController: 0x7227d30>.
cannot perform action _showMoreItems: with sender <UIMenuController: 0x7227d30>.
cannot perform action _setRtoLTextDirection: with sender <UIMenuController: 0x7227d30>.
cannot perform action _setLtoRTextDirection: with sender <UIMenuController: 0x7227d30>.
can perform action customCopy: with sender <UIMenuController: 0x7227d30>.
can perform action custom1: with sender <UIMenuController: 0x7227d30>.
cannot perform action custom2: with sender <UIMenuController: 0x7227d30>.
can perform action custom3: with sender <UIMenuController: 0x7227d30>.
can perform action custom4: with sender <UIMenuController: 0x7227d30>.
cannot perform action cut: with sender <UIMenuController: 0x7227d30>.
cannot perform action select: with sender <UIMenuController: 0x7227d30>.
cannot perform action selectAll: with sender <UIMenuController: 0x7227d30>.
cannot perform action paste: with sender <UIMenuController: 0x7227d30>.
cannot perform action delete: with sender <UIMenuController: 0x7227d30>.
cannot perform action promptForReplace: with sender <UIMenuController: 0x7227d30>.
cannot perform action _showMoreItems: with sender <UIMenuController: 0x7227d30>.
cannot perform action _setRtoLTextDirection: with sender <UIMenuController: 0x7227d30>.
cannot perform action _setLtoRTextDirection: with sender <UIMenuController: 0x7227d30>.
  • Apparemment, il n'existe aucun moyen de supprimer la copie de UIMenuController dans Objective-C, mais il est possible à l'aide de CSS: -webkit-user-select:none; iphonedevsdk.com/forum/iphone-sdk-development/...
  • Peut-être que je n'étais pas assez claire dans le paragraphe d'ouverture, mais je n'essaie pas d'empêcher la sélection de l'utilisateur. Je suis en train de mettre plus d'un élément de menu personnalisé dans UIMenuController sans être coincé sous le "Plus..." dans le menu. Vous avez utilisé pour être en mesure de le faire par la prévention de la commande de Copie à partir apparaître (stackoverflow.com/questions/4311009/...), mais qui ne fonctionne plus.
  • que voulez-vous dire "ne fonctionne plus"? est-il cassé dans iOS5 ou quelque chose?
  • Par "ne fonctionne plus", je veux dire que la solution posté ici: stackoverflow.com/questions/3255070/... ne fonctionne pas. Il a apparemment utilisé pour. D'autres (stackoverflow.com/questions/4311009/...) ont également trouvé que cette solution ne fonctionne pas. Comme je l'ai mentionné dans ma mise à jour, la méthode de remplacement n'est jamais appelé à la "copie".
  • Avez-vous enfin trouver une solution pour les versions plus récentes?
  • Aussi remarque ... stackoverflow.com/questions/19280119/...

InformationsquelleAutor lfalin | 2011-07-07