2011-08-10 3 views
0

J'ai un formulaire de données que j'ai développé sous Snow Leopard, qui a NSTextField cases aux côtés de champs NSComboBox, et cela a l'air bien sous Snow Leopard, mais maintenant dans Lion, ils sont dessinés légèrement différemment. J'ai aussi quelques NSComboBox champs avec un bouton Aréolées, et quelques-uns avec un bouton non ordonnée, et ceux-ci ne correspondent pas, que ce soit (bien que le bouton bordé NSComboBox semble proche de la NSTextField, bien que ce n'est pas un match, que ce soit.NSTextField et NSComboBox sont dessinés différemment dans Lion

Comment puis-je obtenir tout pour correspondre harmonieusement, je serais heureux d'avoir une NSTextField à saisie semi-automatique comme une zone de liste déroulante, depuis que je cache le bouton de toute façon

non Bordée NSComboBox gauche, NSTextField droite (autre bord supérieur).:

Non-Bordered Combo vs. Text Field

Bordée NSComboBox left, droit NSTextField` (différentes hauteurs):

Bordered Combo vs. Text Field

Répondre

2

Je fini par remplacer mes boîtes combo non bordées (pour lequel j'avais caché les boutons) avec NSTextField commandes, en utilisant la méthode ici : NSTextField AutoCompletion.

je l'ai modifié légèrement:

- (void)controlTextDidChange:(NSNotification *)obj { 
    if (!isAutoCompleting) { 
     isAutoCompleting = YES; 
     [[[obj userInfo] objectForKey:@"NSFieldEditor"] complete:nil]; 
     isAutoCompleting = NO; 
    } 
} 

Quand je veux le bouton NSComboBox soit visible, j'utilise le style bordée, ce qui correspond assez près.

+0

Je suis content que vous ayez trouvé ma réponse utile. Votre upvote (je suppose) l'a ramené à mon attention, et je l'ai juste édité avec un peu plus d'information. J'ai trouvé qu'il était nécessaire de garder plus qu'un simple drapeau - mon implémentation actuelle garde trace de la dernière chaîne que l'utilisateur a réellement tapée et la compare chaque fois avec la 'chaîne 'courante de l'éditeur de champ. Bonne chance! –

+0

@JoshCaswell: Hypothèse correcte :-) – Dov