34 votes

impossible de modifier NSTextField dans la feuille au moment de l'exécution

Lors du clic sur un bouton, je voudrais afficher une feuille avec une e-mail+mot de passe, avec des options pour enregistrer et annuler. L'INTERFACE utilisateur est configuré, les actions sont en place, et la feuille apparaît et annule comme prévu. Le problème est que je ne peux pas le modifier, soit de le NSTextFields lors de l'exécution; ils semblent désactivés, et le système d'exploitation erreur de lecture du son sur chaque touche appuyez sur cette touche lorsque la feuille est ouvert. J'ai lu sur de SORTE que UIActionSheet est approprié, mais ce n'est pas une application iOS.

Les objets textfield sont activés, et a travaillé précédemment dans un autre panneau. J'ai fait en sorte que le IBAction liens sont intacts, mais sinon je suis même pas sûr de la façon de résoudre les problèmes.

Quid d'une feuille de provoquer une bonne santé NSTextField de refuser l'entrée?

// show the sheet
-(IBAction)showAccount:(id)sender {
    [NSApp beginSheet:accountWindow 
       modalForWindow:prefsWindow
        modalDelegate:self 
       didEndSelector:NULL 
          contextInfo:NULL];
}

// cancel/hide the sheet
-(IBAction)cancelAccount:(id)sender {
    [NSApp endSheet:accountWindow];
    [accountWindow orderOut:nil];   
}

Edit: je viens de découvrir que je peux le clic droit et coller du texte dans chaque champ, mais je ne peux pas sélectionner ou supprimer. Il semble que le NSTextFields ne pas se concentrer et de ne pas recevoir de saisie au clavier comme ils le feraient d'habitude. J'ai aussi oublié de mentionner que mon bouton Enregistrer les appels et exécute sa méthode correctement.

83voto

Matt Stein Points 2313

Il se trouve que j'ai trouvé la solution au hasard, que je vais maintenant poster pour la postérité ...

La vue utilisée comme feuille (NSWindow ou NSPanel) doit comporter une barre de titre. Dès que j'ai basculé dans l'inspecteur d'Interface Builder (case à cocher Fenêtre → Apparence → Barre de titre), je me suis recompilé et les champs NSTextField ont été mis en surbrillance, mis en évidence et acceptés comme ils le seraient dans n'importe quel autre affichage. Vous ne savez pas pourquoi la barre de titre fait une différence, mais voilà.

42voto

Sofi Software LLC Points 1835

Le point de vue n'est pas absolument avoir une barre de titre.

Voir Pourquoi NSWindow sans styleMask:NSTitledWindowMask ne peut pas être keyWindow?

Qui dit: Si vous voulez un titleless fenêtre pour être en mesure de devenir une fenêtre, vous devez créer une sous-classe de NSWindow et remplacer -canBecomeKeyWindow comme suit:

- (BOOL)canBecomeKeyWindow {
    return YES;
}

Cela a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X