[résolu] Activer cmd + V par programmation dans un NSTextField

mybofymybofy Membre
décembre 2013 modifié dans API AppKit #1

Bonjour


 


 


Il est possible d'utiliser cmd + V dans un NSTextField si le menu Edit existe et n'est pas hidden.


 


Est-il possible d'activer cmd + V par programmation sans menu Edit ?


Je ne vois pas pourquoi ce ne serait pas possible, puisque ça l'est via le menu Edit.


Mais je n'ai pas le début d'une piste.


Problème : l'implémentation du menu Edit n'est pas visible, au moins pour moi.


 


Merci


Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu n'as pas la bonne approche.

    Il ne faut pas chercher à  reproduire / activer cmd+V par programmation.
    Il ne faut pas chercher à  activer le menu edit.
    Il faut te poser la question de la finalité de ce que tu veux faire.

    En l'occurrence, l'action que tu veux faire, c'est "coller le contenu du presse-papiers".
    Donc il faut chercher comment récupérer/coller le contenu du presse-papiers. Donc chercher autour du terme "Pasteboard" puisque c'est le nom en anglais du presse-papiers.

    Donc on cherche Pasteboard sur google, et on trouve :
    - Le concept de Pasteboard expliqué dans la DevPedia Apple (bon c'est pour iOS mais les concepts sont grosso modo les mêmes
    - Le Pasteboard Programming Guide dans la doc Apple (et ça c'est pour Mac) avec tous les concepts écrits, les exemples de code et tout.
  • Bon, est-ce que je me trompe en disant que cmd + V doit être déclaré avec un NSMenu ? Sans quoi il est inopérant.


     


    Et qu'il faut passer à  Quartz Event pour gérer plus finement les touches du clavier ? Si c'est bien le cas, c'est trop compliqué pour moi.


     


    Je vais informer mes utilisateurs qu'ils peuvent remplir un champ en y faisant un clic droit > Paste.


     


    Merci

  • berfisberfis Membre
    novembre 2013 modifié #4

    Oui, si tu veux utiliser un cmd+v, il doit être déclaré dans un menu, même si ce menu n'est pas affiché. Ou comme équivalent clavier d'un bouton, même invisible. L'idée étant de connecter ce menu/bouton à  l'aide d'une IBAction.


     


    Quant à  Quartz Event, je ne vois pas ce qu'il vient faire ici. Il s'agit d'events gérées par la bibliothèque Appkit.


     


    Maintenant, si tu veux préremplir un champ via le Pasteboard (si j'ai bien compris) tu peux agir sur la @property reliée à  ton TextField, en la mettant à  la valeur récupérée dans le Pasteboard.


  • AliGatorAliGator Membre, Modérateur


    Bon, est-ce que je me trompe en disant que cmd + V doit être déclaré avec un NSMenu ?

    [...]

    Je vais informer mes utilisateurs qu'ils peuvent remplir un champ en y faisant un clic droit > Paste.

    T'as rien lu de ma réponse à  ce que je vois.
  • berfisberfis Membre
    novembre 2013 modifié #6

    Aligator, je pense qu'on sèche sur la phrase obscure:



    Problème : l'implémentation du menu Edit n'est pas visible, au moins pour moi



    ...



     


  • AliGatorAliGator Membre, Modérateur
    Et alors ? On en a rien à  foutre du menu Edit, ce qu'on veut c'est coller le contenu du presse-papier. Pas besoin de menu Edit pour ça. Faut juste faire mumuse avec [NSPasteboard generalPasteboard] un truc comme ça. (tout est décrit dans le Programming Guide que j'ai donné en lien)

    Comme je l'ai déjà  expliqué plus haut, faut pas aborder le problème façon "je veux activer le menu Edit>Paste" mais façon "je veux coller le contenu du presse-papier", puisqu'au final c'est ça qu'on veut. Tout comme si tu veux exécuter le code d'un bouton, tu cherches pas à  simuler un clic souris aux coordonnées où se trouve le bouton ou un truc saugrenu comme ça, tu executes juste le code du bouton.

    L'implémentation du menu Edit n'est pas visible, certes, mais je vous ai dit à  quoi elle ressemblait : à  du code qui va coller le contenu du presse papier. Et j'ai fourni les liens qui expliquent les concepts de presse-papiers / NSPasteboard et les codes qu'il faut pour l'implémenter, donc bon...
Connectez-vous ou Inscrivez-vous pour répondre.