2012-07-27 8 views
7

Ich bin neu in Mac OS X/Cocoa Entwicklung. Während der Erstellung meiner ersten App stieß ich auf ein paar Dinge, und eine davon ist mein Problem auf der grünen + Taste, die zum Zoomen gedacht ist.Wie aktiviere/deaktiviere ich die Zoom-Taste (grün + Taste)?

Ich würde gerne wissen, ob es möglich ist, das Verhalten der Zoom-Taste des App-Fensters dynamisch einzustellen? Verstehe ich keine Regel aus den Richtlinien von Apple?

Ich möchte das Verhalten der Schaltfläche für einen bestimmten Benutzer angeben. Sagen wir, der Benutzer darf eine Zoomtaste haben, dann sollte die Schaltfläche aktiviert sein; Andernfalls lassen Sie die Schaltfläche deaktiviert.

In diesem Fall, wenn die App gestartet wird, überprüfe ich, ob der Benutzer eine aktivierte Zoom-Taste haben darf. Von hier aus möchte ich das Verhalten des Fensters in Bezug auf die Zoom-Schaltfläche anpassen - ob es gemäß der vorherigen Überprüfung des Benutzermodus aktiviert oder deaktiviert werden soll.

Vielen Dank für die Hilfe!

+0

Warum sollte das Zoomen jemals eingeschränkt werden? Seine Aktionen würden auf der Fenstergröße des Inhalts basieren, was * keine * geheime Information ist, da die Bildlaufleisten es auch brauchen. Der Benutzer könnte Einschränkungen umgehen, indem er das Fenster selbst auslegt. Die Fenstergröße ist ein anwenderseitiges Terminalattribut, nicht etwas, das vom Serverende gesteuert werden sollte. – CTMacUser

Antwort

9

Sie können einen Verweis auf diese Schaltfläche mit standardWindowButton:NSWindowZoomButton erhalten und dann tun, was auch immer Sie tun können mit NSButton.

aktualisieren (in swift):

var button = view.window?.standardWindowButton(NSWindowButton.ZoomButton) 
button?.enabled = false 
+0

Siehe Sam Soffes Antwort unten für die richtige Vorgehensweise. –

+1

Danke! Wenn Sie Ihr Fenster in der Größe veränderbar halten möchten, aber nicht möchten, dass Ihre Anwendung beim Drücken der Taste den gesamten Bildschirm ausfüllt, deaktiviert dieser Code die grüne Zoomtaste. – balazs630

6

die Taste Grabbing und aktivierte Einstellung ist nicht ideal. Der beste Weg (10.6+) ist setStyleMask: zu verwenden. Gehen Sie folgendermaßen vor:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask 

Sie können Stile nach Belieben hinzufügen oder entfernen. Eine andere Möglichkeit, dies zu tun, ohne den Stil zu ändern, besteht darin, minSize und maxSize auf die gleiche Größe zu setzen. Dadurch wird auch die Größenänderung deaktiviert.

1

In Swift 3, hier ist der einfachste Weg, um die Fähigkeit zu entfernen:

var style = window.styleMask 
style.remove(.resizable) 
window.styleMask = style 

ich häufig tue dies in viewDidAppear für View-Controller in Storyboards, die eine Fenstersteuerung für sie automatisch statt einer erstellt haben kann ich sich anlegen mit.