NSSearchField

06:56 modifié dans API AppKit #1
Bonjour
J'ai crée avec interface builder un NSSearchField que j'ai lié à mon controleur, mais je n'arrive pas par programmation à accéder à la NSSearchTextCell qui est lié au controle, je voudrais par exemple changer le holder :
[searchfield setPlaceholderString:@Title];
mais j'obtiens une erreur, normal le setPlaceHolderString est une methode de NSSearchTextCell.

Comment faire pour acceder à la NSSearchTextCell???

Réponses

  • BruBru Membre
    06:56 modifié #2
    Essaie ça :

    [[searchfield cell] setPlaceholderString:@"Title"];
    


    .
  • 06:56 modifié #3
    j'ai déjà essayé cela mais le champs reste vide, "Title" ne s'inscrit pas dans la cellule.
  • 06:56 modifié #4
    En fait de viens de me rendre compte que si cela ne s'affiche pas c'est parce que le NSSearchField à le focus!!  :'(

    Merci.
  • 06:56 modifié #5
    Nouveau problème avec NSSerachField.
    Pour pouvoir supporter le drag and drop, il semblerait qu'il faille sous-classer la classe NSSearchField, or une fois ceci effectué, lorsque l'on defini la "custom class" du NSSearchField dans Interface Builder, celui-ci envoi le  message suivant :
    Secure text fields do not display with round borders at runtime.  This operation will convert the text field to be non-rounded.
    1) la classe est une sous classe de NSSerachField et non pas de NSSecureTextField
    2) est avoir un chanps de recherche carré plutot qu'arrondi est disgracieux.

    Quelqu'un à  t-il une solution à  ce problème??
  • BruBru Membre
    06:56 modifié #6
    Je ne comprends pas trop ta démarche.

    Par défaut, un NSSearchField est capable de faire du drag 'n drop. Tu n'as donc pas besoin de créer une sous-classe.

    .
  • 06:56 modifié #7
    salut,

    oui il sait faire du drag, mais accepter le déposer???
  • BruBru Membre
    06:56 modifié #8
    dans 1091894472:

    salut,

    oui il sait faire du drag, mais accepter le déposer???


    Hé hé, tous les NSTextFields (et donc par héritage, les NSSearchFields) accepte le "déposer", mais à  la condition que le focus soit dessus.

    .
  • 06:56 modifié #9
    Oui, le problème est bien là .

    Si je veux faire un glisser/Déposer d'une NSTableView qui est dans un Drawer vers un NSSearchField qui est dans la fenêtre parente, quand je débute le drag, c est la NSTableView qui est détentrice du focus!!
  • BruBru Membre
    06:56 modifié #10
    En fait, le problème vient de IB qui est (une fois de plus) buggé.

    Apparement IB confond NSSearchField avec NSSecureTextField...

    Pour rétablir les choses, dans le awakeFromNib de ton controleur, rajoute :
    [ton_search_field setBezelStyle:NSTextFieldRoundedBezel];
    


    et tout rentrera dans l'ordre.

    .
  • 06:56 modifié #11
    Voila, comme cela on résoud bien le bug d'interface Builder, et notre NSSearchField ressemble bien à  une NSSerachField

    le code pour implementer le drag&Drop :
    #import "MySearchField.h"

    @implementation MySearchField
    //

    // Drag & Drop
    //


    - (void)awakeFromNib
    {
    [self registerForDraggedTypes:[NSArray arrayWithObjects:@NSStringPboardType,nil]];
    }


    - (void)concludeDragOperation:(id <NSDraggingInfo>)sender
    {
    [self setStringValue:sender draggingPasteboard] stringForType:@&quot;NSStringPboardType&quot;;
    [self setNeedsDisplay:YES];
    }

    - (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
    {
    return YES;
    }

    - (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
    {
    return NSDragOperationCopy;
    }

    @end

    merci.

    Ne saurais tu pas aussi comment rendre actif les iNSMenuItems du menu associé au NSSearchField sans à  avoir au moins une fois validé le contenu d'une recherche dans le NSSearchField ??
Connectez-vous ou Inscrivez-vous pour répondre.