Wie fügen Sie die Fähigkeit hinzu, mit der rechten Maustaste auf eine Zeile in einem NSOutlineView zu klicken, damit Sie ein Objekt oder eine andere Aktivität löschen können. (zB wenn man mit der rechten Maustaste auf einen Ordner in der Apple Mail App klickt)Wie fügen Sie NSOutlineView Kontextmenü hinzu (dh Rechtsklickmenü)
Ich denke, ich bin halb da, ich habe eine Unterklasse von NSOutlineView, die es mir erlaubt, den Rechtsklick zu erfassen und ein Kontextmenü basierend auf dem anzuzeigen die ausgewählte Zeile und nicht die Zeile, auf die die Maus klickt.
Entschuldigung, wenn die Antwort offensichtlich ist, kann ich gerade keine Hilfe online oder in der Dokumentation finden.
Vielen Dank für die Antwort auf die Leere, es mir, dies zu verwenden führen:
- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
NSPoint pt = [self convertPoint:[theEvent locationInWindow] fromView:nil];
id item = [self itemAtRow: [self rowAtPoint:pt]];
return [self defaultMenuFor: item];
}
Ohne läuft es, das sieht aus wie es sollte gut funktionieren. Nicht wahr? Wenn nicht, welches Problem haben Sie damit? –
Verwenden Sie das Präfix NS auch nicht für Ihre eigenen Klassen. Wenn Apple einer zukünftigen Version von Cocoa eine NSContextOutlineView-Klasse hinzufügt, kollidieren ihre Klasse und Ihre Klasse, und Ihre App wird wahrscheinlich nicht ausgeführt. –
Ich denke, das Problem mit dem geposteten Code ist, dass es die selectedRow verwendet und nicht die Zeile, auf der der rechte/ctrl-Klick ausgeführt wurde. Das kann die ausgewählte Zeile sein oder nicht. – VoidPointer