2017-05-28 5 views
0

Ich versuche, das Schlüsseläquivalent eines NSButton in einem NSWindow zu setzen. Ich verwende den folgenden Code in meiner Ansicht-Controller Klasse:Key Equivalent auf NSButton Failing

someButton.keyEquivalent = "\r" 

Allerdings, wenn ich die Anwendung ausführen, wird die Taste nicht der Schaltfläche Aktion ausführen, aber das System Funk-Sound spielen.

Das Fenster, das dieses NSButton enthält, wird als ein Fenster (kein Blatt) dargestellt, das ein modales NSStoryboardSegue verwendet. Wenn ich den gleichen Code und die gleiche Konfiguration in meinem ursprünglichen Fenster verwende, wird das Schlüsseläquivalent korrekt ausgeführt. Würde die Art der Präsentation dieses Problem verursachen? Vielen Dank.

EDIT

stellte sich heraus, das ein möglicher Fehler sein kann. Schlüsseläquivalente funktionieren nicht, wenn eine Titelleiste im IB deaktiviert ist. Ich versuche nun, einen Weg zu finden, dieses mit dem gleichen Fensteraussehen ausgewählt zu halten. Wenn ich die Option ausgewählt habe und die Eigenschaft titlebarAppearsTransparent unter NSWindow verwende, habe ich die Titelleiste erfolgreich entfernt, aber jetzt weiß ich nicht, wie ich den Fensterrahmen entfernen soll. Irgendwelche Ideen?

Antwort

1

Haben Sie zufällig die Titelleiste in Ihrem Fenster deaktiviert? Es gibt ein unerwartetes Verhalten (zögern, es als Fehler zu bezeichnen), bei dem Tastaturereignisse in einem modalen Fenster ignoriert werden, wenn die Titelleiste deaktiviert ist (obwohl die Titelleiste nicht in Blättern verwendet wird).

+0

Ich mache, wie ich den Fensterrahmen entfernen wollte. Irgendwelche Ideen? Ich hoffe, dass dieser "Fehler" gemeldet wird –

+0

Wenn Sie es als ein Blatt präsentieren, ist dies unnötig, da die Titelleiste nie auf einem Blatt angezeigt wird. Also mach es wieder an und teste; Ich wette, es wird so aussehen, wie Sie es wollen und gut funktionieren. Wenn Sie die Szene auch als nicht-modal verwenden möchten, schalten Sie die Titelleiste im Code in 'prepareForSegue ...' um. –

+0

Leider stelle ich es als normales Fenster und nicht als Blatt dar und deshalb brauche ich wirklich mein Fenster, um keine Titelleiste zu enthalten. Gibt es eine andere Möglichkeit, die Titelleiste und die anschließende Fensterumrandung zu verbergen, während der Schalter eingeschaltet bleibt? Ich werde meine Frage aktualisieren –