2012-10-28 12 views
7

Ich verwende eine normale (nicht unterklassierte) NSTableCellView in einer Ansicht-basierten Tabellenansicht. Es hat die anfänglichen Bild- und Textfeldansichten. Ich habe der Ansicht einen NSTEpper hinzugefügt.NSStepper in NSTableCellView hat keinen Effekt

Das Textfeld ist an tableCellView.objectValue.quantity gebunden. Der Wert des Steppers ist auch an tableCellView.objectValue.quantity gebunden.

Das Problem ist, dass beim Ausführen der App, wenn ich auf den Stepper klicken scheint es nicht das Mausereignis zu bekommen, keiner Pfeil wird hervorgehoben, der Wert wird nicht erhöht oder dekrementiert.

Wenn ich die Doppelaktion der Tabellenansicht einstelle, wird sie ausgelöst, wenn ich auf den Stepper doppelklicke, als wäre er transparent.

Was fehlt mir?

Danke!

Antwort

9

Sie sollten sich die Dokumentation ansehen, aber am einfachsten ist es, dass Sie NSTableView von der Unterklasse trennen und diese Methode überschreiben müssen, um den vorgeschlagenen First Responder zu validieren. Da das Dokument NSTableViews angibt, dürfen einige Steuerelemente nicht verwendet werden, es sei denn, die Zeile wird zuerst ausgewählt. Selbst dann kann es immer noch einige verwerfen.

+0

Vielen Dank: es funktioniert! – wdyp

+0

du bist ein Held !!! –

0

Weiter zu der richtigen Antwort von Robert Payne, mit Swift könnten Sie eine Erweiterung zu NSTableView hinzufügen und nicht Unterklasse.

extension NSTableView { 
    override public func validateProposedFirstResponder(responder: NSResponder, forEvent event: NSEvent?) -> Bool { 
     return true 
    } 
} 

Und ich möchte betonen, dass es die NSTableView nicht die NSTableViewCell ist.