Farben über NSFontPanel einstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Farben über NSFontPanel einstellen

    Hat schon jemand geschafft die Farben für Textfarbe, Hintergrund, Unterstrich- und Durchstrichlinie über das NSFontPanel einzustellen?

    Was ich vor habe: In einem NSTextField bzw. einer Subklasse davon will ich die ausgewählte Schriftart plus Größe und die per NSFontPanel einstellbaren Textattribute darstellen. Das klappt auch schon alles hervorragend, außer die Farben. Sobald ich im NSFontPanel nämlich irgend etwas mit Farbe anklicke, verliert mein Textfeld den First Responder Status und die notwendigen Nachrichten changeColor:, changeDocumentBackgroundColor: und changeAttributes: landen sonst wo, nur nicht bei meinem Textfeld. Ich habe auch schon versucht, die Nachrichten an anderen Stellen der Responder Chain einzufangen, aber auch da scheitere ich, da das Sheet, auf dem das Textfeld sitzt auch seinen key-Status verliert. In Apples Dokumentation finde ich keinen weiteren Ansatzpunkt, wo ich angreifen könnte.

    Hat vielleicht jemand von Euch noch eine Idee?

    Michael
  • RE: Farben über NSFontPanel einstellen

    Ich kann nur anmerken, dass ich das Problem kenne und es halbwegs für meine Bedürfnisse mit einem 'accessoryView' umschifft habe. Schön war (ist immer noch) was anderes.
    I would be embarrassed if they did not spy on me.
  • RE: Farben über NSFontPanel einstellen

    Original von Michael
    Original von MCDan
    Hast Du eine DBA oder eine einfache Application?

    Weder, noch. Es handelt sich um ein Plug-in.

    Du könntest vielleicht versuchen für das TextField bzw. die TextFieldCell eine CustomClass zu verwenden, welche bei resignFirstResponder NO zurück liefert, solange man über das FontPanel Änderungen vornehmen kann. Dann sollten alle Nachrichten des FontPanel weiterhin an das TextField gehen.
  • RE: Farben über NSFontPanel einstellen

    Original von Michael
    Das Problem mit resignFirstResponder ist, wie erkenne ich, dass der Anwender mit dem FontPanel fertig ist?
    Michael

    Ich hatte das selbe Problem mal mit dem Color-Panel und hab bis heute noch keine vernünftige Lösung dafür gefunden.
  • RE: Farben über NSFontPanel einstellen

    Original von Michael
    Das Problem mit resignFirstResponder ist, wie erkenne ich, dass der Anwender mit dem FontPanel fertig ist? Es gibt ja schließlich noch andere Textfelder auf dem Sheet, die auch mal First Responder sein wollen.

    Du kannst doch

    Quellcode

    1. - (BOOL)resignFirstResponder
    überschreiben.
    I would be embarrassed if they did not spy on me.
  • RE: Farben über NSFontPanel einstellen

    Original von longW
    Original von Michael
    Das Problem mit resignFirstResponder ist, wie erkenne ich, dass der Anwender mit dem FontPanel fertig ist? Es gibt ja schließlich noch andere Textfelder auf dem Sheet, die auch mal First Responder sein wollen.

    Du kannst doch

    Quellcode

    1. - (BOOL)resignFirstResponder
    überschreiben.

    Dann sind aber alle anderen Textfelder nutzlos. Ich werde wohl bei der Lösung mit dem NSApplication Delegate bleiben müssen.

    Michael
  • RE: Farben über NSFontPanel einstellen

    Die Idee einen Delegate zu nutzen finde ich gut. Nur, wo und wann setzt Du ihn?
    Aus den Beiträgen habe ich geschlossen, dass Du ihn zwischen 'becomeFirstResponder:' und 'resignFirstResponder' setzt, ihn also im Prinzip mit den Methoden klammerst. Dachte ich zumindest.
    Denn dann kann doch eigentlich nichts passieren, außer dass Du eine zusätzliche Instanzvariable pflegen musst, für den vorhandenen Delegierten.
    I would be embarrassed if they did not spy on me.
  • RE: Farben über NSFontPanel einstellen

    Original von longW
    Die Idee einen Delegate zu nutzen finde ich gut. Nur, wo und wann setzt Du ihn?

    Setzen tue ich den jetzt, wenn das Sheet angezeigt wird und den alten Delegate stell ich wieder her, wenn das Sheet verschwindet. Das zwischen becomeFirstResponder und resignFirstResponder zu setzen würde mir ja gar nichts bringen, denn so lange mein Textfeld First Responder ist, brauche ich die Delegate Funktionalität ja gar nicht.

    Michael