Question

Tout d’abord; Je suis un débutant COMPLET chez Cocoa, alors veuillez vous déshabiller avec moi pour avoir posé une question qui, j'en suis sûr, est stupide et totalement newbish.

Ma situation est la suivante: je souhaite développer les fonctionnalités de NSTextField. Parmi les choses que je veux réaliser, il y a:

Modification de l'apparence du curseur.

Détecter lorsque le texte atteint un certain nombre de caractères, puis colorier le texte après cette limite différemment. *

À ma grande frustration après avoir passé pas mal de temps à chercher sur Google, je trouve des centaines de hits qui déclarent simplement "Sublass NSTextField et utilisent ce code", et à mon humiliation, je me suis retrouvé incapable de dire exactement comment faire cela.

Je serais extrêmement reconnaissant si quelqu'un pouvait me donner un exemple de travail d'une sous-classe qui réalise l'une des deux choses énumérées ci-dessus, ainsi que des instructions * sur la façon d'appliquer le code afin que je puisse essayer de comprendre comment cela fonctionne. regarder du code réel réel.

Je suis extrêmement désolé de ma réponse tardive!

Toutes mes excuses à vous tous. J'ai un bébé colique à la maison et, comme vous (ou du moins ceux d'entre vous qui ont des enfants) pouvez imaginer que cela prend beaucoup de votre temps disponible. Merci à tous pour vos réponses.

Je constate que l'un de mes principaux problèmes est que je ne comprends pas suffisamment les délégués et les points de vente. J'ai acheté le livre recommandé ici (et de nombreux autres endroits. Une sorte de "Bible", je suppose) et je suis en train de l'examiner alors que nous parlons dans les quelques heures de silence que j'ai ces jours-ci. :)

Mais bien que je sache que ce sera un outil indispensable pour moi, je suis toujours plus compréhensif en étudiant des exemples plutôt qu'en lisant la théorie *. Je serais donc extrêmement reconnaissant à quelqu'un de créer un projet avec une sous-classe de la classe pertinente puisque je comprends que je ne devrais probablement pas étendre la classe NSTextfield?

Je marquerais instantanément la réponse de Mark Thalmans comme réponse, car je suis sûr que c’est un bon "pour les nuls". réponse, mais je vais tenir pendant quelques jours, car je voudrais vraiment un fichier à parcourir. Mais je ne suis pas ingrat!

Oh, et; S'il te plaît, crois-moi les gars quand je dis que je ne suis pas aussi inutile dans des langues que je connais réellement. C'est juste que ces concepts avec la connexion d'Interface Builder et les interfaces graphiques au code m'est très inconnu. D'habitude, je ne fais qu'écrire le code et le garder.

* Oui, mon premier petit projet de formation est bien un utilitaire Twitter.

* J'aime un enfant

* La lecture de la théorie n’a pas non plus une valeur inestimable pour moi. Je ne serais pas où je suis sans le guide définitif de Colin Moock sur AS3

Était-ce utile?

La solution

Martin,

J'ai commencé avec le "Nouveau fichier". dialogue et choisissez "Cacao". à gauche puis en classe Objective-C.

Cela générera le code suivant, sans les commentaires. Il vous suffit ensuite de modifier le NSObject dans l’interface "@ interface". ligne de l'en-tête vers " NSTextView " et vous avez une sous-classe de travail. Si vous utilisez XCode 3.0, vous pouvez accéder à Interface Builder et modifier la classe de votre NSTextField en "MyTextView".

Vous devriez également vous procurer le livre de Aaron Hillegass "Cocoa Programming pour Mac OS X, troisième édition". Il a été mis à jour pour Leopard, si ce n’est déjà fait.

Bonne chance.


#import <Cocoa/Cocoa.h>


@interface MyTextView : NSTextView {
 // Outlets & Members go here
}
// Actions & messages go here
@end


#import "MyTextView.h"


@implementation MyTextView

@end

Autres conseils

setInsertionPointColor: se chargera de définir la couleur du curseur, et le recours à des méthodes de délégation serait le meilleur moyen de colorer le texte après le changement du nombre de caractères. En général, beaucoup de cours de cacao sont comme ça; vous pouvez les sous-classer, mais la plupart des fonctionnalités que vous devez modifier se trouvent dans les méthodes de délégation.

NSTextField est spécial, car il n’implique pas réellement l’édition de texte. Cette opération est effectuée par un NSTextView partagé (par fenêtre), appelé éditeur de champs . Vous pouvez fournir un éditeur de champ spécial pour un NSTextField donné. Cela est fait canoniquement en sous-classant NSWindow (!) Et en remplaçant -fieldEditor: forObject: . Cependant, lorsque j'ai recherché cette information, j'ai trouvé la méthode de -setUpFieldEditorAttributes: de NSTextFieldCell , qui semble renvoyer un éditeur de champ différent de celui qui lui a été remis.

Lecture recommandée: Thèmes de contrôle et de programmation cellulaire pour Cocoa , Présentation du système de texte .

  1. Si vous devez vraiment le sous-classer, vous devez sous-classer le NSTextFieldCell . Les informations sur NSCells sont disponible en ligne .

  2. Ne sous-classez pas la cellule si cela n'est pas absolument nécessaire. Utilisez la méthodes de délégation . / p>

  3. Au moins, la couleur peut être modifiée à l'aide de Liaisons NSTextField , utilisez-les.

Vous pourrez peut-être aussi obtenir certaines des fonctionnalités requises avec un formateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top