NSTextField et raccourci "coller"

APAP Membre
14:59 modifié dans API AppKit #1
Bonjour,

J'ai un NSTextfield qui n'accepte pas les "coller" via cmd + V.

Avez-vous une idée d'où cela peut-il venir?

Merci  :)

Réponses

  • CéroceCéroce Membre, Modérateur
    14:59 modifié #2
    Comme ça, je dirais que le text field n'est pas éditable (case à  cocher dans IB).
    Ou alors, la cible de la commande Coller n'est pas nil.

    Pas d'autre idée pour l'instant.
  • laudemalaudema Membre
    14:59 modifié #3
    cmd + v est attribué à  un autre bouton/menu (par inadvertance) ?
  • APAP Membre
    14:59 modifié #4
    dans 1292225411:

    Comme ça, je dirais que le text field n'est pas éditable (case à  cocher dans IB).
    Ou alors, la cible de la commande Coller n'est pas nil.

    Pas d'autre idée pour l'instant.


    Merci pour ta réponse. Ce qui est bizarre c'est que clic droit coller fonctionne.
  • APAP Membre
    14:59 modifié #5
    dans 1292226712:

    cmd + v est attribué à  un autre bouton/menu (par inadvertance) ?


    Comment le vérifier simplement?
  • CéroceCéroce Membre, Modérateur
    14:59 modifié #6
    Sélectionne l'article Copier.
    Dans l'inspecteur, rubrique Menu Item Connections, la target de l'action copy: doit être First Responder.
  • laudemalaudema Membre
    14:59 modifié #7
    En général il n'y a pas tant de raccourcis clavier dans une fenêtre ou les menus qu'on ne puisse faire rapidement le tour de ceux qu'on a ajouté il me semble.
    Sinon faire une boucle dans un objet qu'on aura mis délégué de la fenêtre
    <br /><br />- (void)windowDidBecomeMain:(NSNotification *)notif{<br />	NSArray *vues = [[[notif object] contentView] subviews];<br />	[self lookForString:@&quot;v&quot; inViews:vues];<br />}<br />- (void)lookForString:(NSString*)s inViews:(NSArray*)views{<br />	for (NSView *v in views){<br />		if ([v isKindOfClass:[NSButton class]] ) {<br />			NSString *cmd = [(NSButton*)v keyEquivalent];<br />			if ([cmd isEqualToString:@&quot;v&quot;]) {<br />				NSLog(@&quot;Le bouton %@ a v pour raccourci&quot;,[(NSButton*)v title]);<br />			}<br />		} else {<br />			if ([[v subviews]count]&gt;0) {<br />				[self lookForString:s inViews:[v subviews]];<br />			}<br />		}<br />	}<br /><br />}<br />
    
  • APAP Membre
    14:59 modifié #8
    dans 1292227555:

    Sélectionne l'article Copier.
    Dans l'inspecteur, rubrique Menu Item Connections, la target de l'action copy: doit être First Responder.


    Je n'ai pas copy c'est normal?

    Merci
  • laudemalaudema Membre
    14:59 modifié #9
    à”tes nous d'un doute: tu crées bien une application pour Mac OS avec une interface "Classique" (= pas en ligne de commande).
    Forcément, sinon tu n'aurais pas de NSTextField.
    Tu n'as pas copy ?
    Tu as un menu Edit dans ton application ?
    Si tu n'en as pas ça voudrait dire que tu l'as supprimé. Pour ce que j'en ai fait toutes mes applis à  partir des templates Xcode (new application) Document based ou pas avaient un menu Edit avec un item Copy. Le tout visible dans Interface Builder en double cliquant sur le fichier MainMenu.xib dans Xcode.
  • APAP Membre
    14:59 modifié #10
    Merci pour ta réponse.
    En effet j'ai supprimé le menu Edit ...
    Il est obligatoire pour faire un cmd + v?

    Merci
  • AliGatorAliGator Membre, Modérateur
    14:59 modifié #11
    Bah heu Commande+V c'est quand même un petit peu le raccourci (keyEquivalent) qui est associé... à  l'article de menu "Coller" du menu "Edition" ;)
    Si tu n'as pas le menu Edition (car tu l'as supprimé), menu qui contient les commandes "Copier"/"Couper"/"Coller"/"Annuler" & co... forcément sans ce menu et ces articles de menu, tu auras du mal à  avoir les raccourcis claviers (comme cmd+c ou cmd+v) associés à  ces articles de menu si eux-mêmes n'existent pas... c'est un peu logique non ?
  • laudemalaudema Membre
    14:59 modifié #12
    Si tu n'as pas de menu edit et que tu n'as pas défini un de tes NSButton pour intercepter comd-v qui veux tu qui l'intercepte ?
    En effet quand tu as un menu edit un de ses menuItem est Copy, il y est associé le raccourci commande-V et quand tu fais command-V comme ce menuItem envoie son action copy: vers "FirstResponder" il va examiner les éléments susceptibles de répondre à  la demande (car ayant implémenté la méthode copy: d'origine (comme NSText) ou par ton code) en partant de celui qui a le focus et en remontant la chaà®ne des répondeur jusqu'à  l'objet Application.
    S'il ne trouve aucun élément d'interface ayant défini une action pour le raccourci comd-v il ne saura pas qu'il doit chercher un répondeur pour copy: donc ne pourra rien en faire et l'ignorera.
    http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW10
  • APAP Membre
    14:59 modifié #13
    Désolé, je vien du monde win32 (honte sur moi...) là  où ce sont les contrôles eux-même qui gèrent les raccourcis.
  • APAP Membre
    14:59 modifié #14
    Et question bête comment le recréer quand on l'a supprimé?
  • laudemalaudema Membre
    décembre 2010 modifié #15
    Tu réouvres ton menu dans IB (par un double clic dans Xcode sur le fichier MainMenu.xib, tu ouvres la bibliothèque (commande-majuscule-L)http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/IB_UserGuide/EditingNibFileObjects/EditingNibFileObjects.html#//apple_ref/doc/uid/TP40005344-CH12-SW12, tu regardes dans les menus il y a un menu Edit que tu peux faire glisser à  nouveau dans ta barre de menu principale..
    Si tu viens de Windows tu peux regarder un peu plus le lien que je te donne dans le post précédent pour t'imprégner de la philosophie Cocoa
  • AliGatorAliGator Membre, Modérateur
    14:59 modifié #16
    Bah tu le fais glisser de la palette des contrôles vers ta MenuBar de ton XIB, comme tu ferais glisser un contrôle quelconque, quelle question ^^
  • APAP Membre
    14:59 modifié #17
    Ca refonctionne!
    Merci à  tous pour vos réponses rapides et les différents liens :)
  • awalidawalid Membre
    14:59 modifié #18
    verifie si cmd + v est attribué à  un autre bouton
Connectez-vous ou Inscrivez-vous pour répondre.