Search code examples
macosswiftcocoa

How to get resolution change event in swift?


I try to make an app, and now i shoud make some changes when screen resolution will change, but i coudn't find how to intercept this event.

Do you have any ideea how can i take that event?


Solution

  • The NSApplicationDidChangeScreenParametersNotification is posted when the configuration of the displays attached to the computer is changed, so you can register for that notification, e.g. with

    NSNotificationCenter.defaultCenter().addObserverForName(NSApplicationDidChangeScreenParametersNotification,
        object: NSApplication.sharedApplication(),
        queue: NSOperationQueue.mainQueue()) {
            notification -> Void in
            println("screen parameters changed")
    }
    

    Note that there can be various reasons why this notification is fired, e.g. a change in the dock size (as observed in Cocoa Dock fires NSApplicationDidChangeScreenParametersNotification), so you have to "remember" the old resolution and compare it with the new resolution.