2010-08-24 19 views

Répondre

0

Si le champ de texte a le focus, je crois que le menu que vous obtenez est en fait celui du Field Editor. Peut-être demander son menu.

3

Essayez d'utiliser le protocole NSTextViewDelegate

- (NSMenu *)textView:(NSTextView *)view menu:(NSMenu *)menu forEvent:(NSEvent *)event atIndex:(NSUInteger)charIndex 

éditeur de champ de la fenêtre puis demandez à votre NSTextField pour le menu

0

Merci pour les autres pointant le chemin. Je n'ai pas pu obtenir l'éditeur de champ par défaut de la fenêtre pour utiliser des méthodes de délégué. Enfin, je mets ce qui suit dans -windowDidLoad de mon délégué de la fenêtre méthode

NSTextView* defaultFieldEditor = [self.window fieldEditor:YES forObject:nil]; 
// defaultEditor.delegate = self; didn't help 
NSMenu *mu = defaultEditor.menu; 
[mu insertItem:[NSMenuItem separatorItem] atIndex:0]; 
[mu insertItemWithTitle:@"Insert Line" 
       action:@selector(acnInsertLine:) 
      keyEquivalent:@"" atIndex:0]; 
[mu insertItemWithTitle:@"Delete Line" 
        action:@selector(acnDeleteLine:) 
      keyEquivalent:@"" atIndex:0]; 

Ceci est censé mettre les éléments au début (LIFO ordre). Vous pouvez utiliser addItem: à la place. Les deux souffrent du problème que le contenu du menu varie et vos articles sont susceptibles de se situer quelque part au milieu.

Notez que l'éditeur de champ est un NSTextView même si le contrôle qu'il couvre est un NSTextField. Cela m'a causé une certaine perplexité.