IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apple Discussion :

Comment gère t'on les événements avec cocoa ?


Sujet :

Apple

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 26
    Points
    26
    Par défaut Comment gère t'on les événements avec cocoa ?
    Bonjour,

    Je me lance dans cocoa, avant j'ai fais un peu de c#.
    Je deviens fou, je cherche depuis deux jours comment gérer un événement avec cocoa, Xcode et Interface Builder. Alors je m'en remets a vous :)
    J'aimerais pouvoir remplir un champ (chpSortie par exemple) quand je commence a rentré quelque chose dans un autre champ a chaque appuie sur une touche du clavier (le champ chpEntre par exemple).
    En gros dans certain language que je connais mieux ce serait un truc du style onChange ou onTextChange ou onKeyPress.
    Mais la je comprends rien, la seul chose que j'ai trouvé sur le net c'est :
    - (void)keyDown:(NSEvent *)theEvent {
    ....
    }
    Mais après je suppose qu'il n'y a pas que ca a rajouter dans le .m ?
    theEvent se réfère a quoi ?
    Rien a faire d'en Interface Builder ?
    Comment relier l'évènement au champ text (textfield)
    Ca fais une semaine que je m'y suis mis et en général je ne suis pas encore dans la maitrise de la poo donc s'il vous plais soyez indulgent :)
    Je suis perdu a ce niveau la. Merci pour votre aide :)

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    lire
    http://developer.apple.com/Mac/libra...hitecture.html
    ne fera pas de tort…

    pour votre question :
    keyDown est une méthode de NSResponder qui est une super classe de NSTextField…
    si vous partez dans cette direction cela signifie faire une sous-classe de NSTextField, ré-implémenter votre version de keyDown et dire dans Interface Builder que ce champ texte est de votre propre sous-classe de NSTextField…

    inconvénient : à vous de gérer tout ce que peut signifier un keyDown… (n'importe quel keydown…)
    on peut dire que cette approche est "low-level"…

    autre approche :
    dans Interface Builder, lier la propriété "delegate" du NSTextField à un objet qui implémentera l'une ou plusieurs de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - (void)controlTextDidBeginEditing:(NSNotification *)aNotification;
    - (void)controlTextDidChange:(NSNotification *)aNotification;
    - (void)controlTextDidEndEditing:(NSNotification *)aNotification;
    et il est évidemment possible d'assigner le delegate par code plutôt que par InterfaceBuilder…
    (pour peu que vous ayez un objet qui ait une référence sur ce NSTextField…)

    cette approche est plus "high level"…

Discussions similaires

  1. Déclencher les évènements avec le clavier
    Par spookyz dans le forum VB.NET
    Réponses: 3
    Dernier message: 20/02/2011, 22h38
  2. Comment gère-t-on les plans avec Delphi ?
    Par NCGUI dans le forum Débuter
    Réponses: 4
    Dernier message: 11/08/2009, 14h57
  3. [Vba-E] Comment gère-t-on les erreurs?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2006, 11h49
  4. Comment gère-t-on les erreurs en C ?
    Par Le Furet dans le forum C
    Réponses: 7
    Dernier message: 24/12/2005, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo