Insbesondere möchte ich eine NSTokenField
ignorieren Mausereignisse machen, weil ich es in einem NSTableCellView
nur zum Anzeigen von Daten in einer Tokenized-Weise ohne Bearbeitung zu verwenden .So machen Sie ein NSControl (zB NSTokenField) ignorieren Mausereignisse
Das Setzen des Tokenfelds enabled = NO
funktioniert, außer dass es die Tokens ausgraut und es schwierig macht, den Text zu lesen.
editable = NO
editable = NO
Einstellung ist ziemlich nah an dem, was ich will-es verhindert Bearbeitung unter Beibehaltung der Token-Feld-Look-außer, wenn ich die Maus über die Token, sie leuchten. Wenn ich das nur verhindern könnte, wäre ich im Geschäft.
Ich vermute, ich muss etwas Unterklasse und überschreiben einige NSResponder
Methoden, aber nicht ganz sicher, was zu tun ist. Ich habe versucht, Unterklasse NSTokenField
und überschreiben mouseEntered:
und mouseMoved:
nichts zu tun, aber das hat auch nicht funktioniert.
Das Feld verwendet wahrscheinlich einen [Tracking-Bereich] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTrackingArea_class/Reference/Reference.html), um diese Mauseingabe/-ausgabe zu erhalten Veranstaltungen. Nicht sicher, warum überschreiben 'mousEntered:' vermasselt Zeichnung, aber Sie könnten '[field setTrackingArea: nil]' auf einem nicht-Unterklasse-Feld versuchen und sehen, was passiert. –
Vielen Dank für das Zeigen, dass, wenn ich die Klasse erstellt habe, 'drawRect:' überschrieben wurde, so dass es nichts getan hat. Ich habe versucht '' (NSTrackingArea * trackingArea in [TokenField trackingAreas]) { [TokenField removeTrackingArea: trackingArea]; } ', aber keine Würfel. Außerdem versuchte ich 'mouseMoved:' zusätzlich zu 'mouseEntered:', aber das hat auch nicht funktioniert ... – yuji
@yuji: Ich habe meine Maschine im Moment nicht zum testen, also bin ich raus Ideen. Vielleicht möchten Sie nur einen eigenen Ersatz für diese Klasse schreiben. Betrachten Sie 'BWToolkit' als Beispiel. –