2009-07-31 8 views
0

Ich habe dies seit letzten Tagen versucht, aber konnte es nicht herausfinden.Mausereignis wird nicht auf meinem NStableview + Kakao erkannt

Ich habe eine Anwendung, die eine NSOutlineView und eine NSTableView hat. Outlineview nimmt einen Pfad ein und zeigt sie in Form einer Baumstruktur an. Wenn also ein Benutzer auf einen bestimmten Ordner in der Outine-Ansicht klickt, sollte der Inhalt des Ordners in der Tabellenansicht mit ihren Attributen in Form einer Liste angezeigt werden.

Jetzt kann ich in den beiden Ansichten die jeweiligen Inhalte anzeigen und die Interaktion zwischen der Umrissansicht und der Tabellenansicht erfolgt über Delegaten und Benachrichtigungen.

Jetzt ist mein Problem, ich möchte Mausereignisse in beiden Ansichten erkannt werden, so dass ich meine App interaktiver machen kann, indem Sie einzelnen Klick aktivieren, doppelklicken, um Öffnen der Datei/Ordner und Kontrolle + Klick zu ermöglichen um ein kontextabhängiges Popup-Menü zu aktivieren. aber seltsamerweise werden keine Mausereignisse erkannt.

mein Design der App ist ziemlich einfach mit jeder Tabelle und Gliederungsansichten haben ihre eigene Sicht und Controller-Klasse und Interaktionen zwischen ihnen mit Benachrichtigungen. Bitte können Sie mir vorschlagen, wo ich falsch liege?

Ich weiß, ich kann Einzelklick und Doppelklick zu arbeiten mit SetAction und DoubleAction Methoden der Tabellenansicht, aber ich kann nicht steuern, klicken Sie auf die Arbeit. Ich will wissen, was ist falsch mit meiner App-Design als nicht meiner Ansichten Mausereignisse Erkennung :(

Dank

Antwort

0

Sie, ob Kontrolle bekommen kann mit gedrückt:

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){ 
    //control was pressed at the time the event was posted 
} 

Oder möchten Sie vielleicht die NSTableView/NSOutlineView und außer Kraft setzt mouseDown- Unterklasse:. das Ereignis direkt zu bekommen

auch wenn die Aktion und Double nicht funktionieren, stellen Sie sicher, dass das Ziel/Aktion korrekt ist mit so etwas wie:

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong");