【问题标题】:Determine when a NSWindow is closing versus leaving full screen确定 NSWindow 何时关闭与离开全屏
【发布时间】:2014-11-17 21:52:27
【问题描述】:

我有一个 NSWindow 进入全屏模式。我的NSWindowControllerNSWindowWillCloseNotification 通知的观察者。

我想在窗口关闭时做一些特别的事情(如用户按下左上角的红色 X 按钮),但当用户离开全屏模式时,我也会收到 NSWindowWillCloseNotification 通知,在在这种情况下,我不希望发生任何事情。

当我观察到NSWindowWillCloseNotification 通知时,有没有办法确定我设置为调用的选择器的内部?在调用我的选择器时,NSWindow 已经离开全屏,所以我无法检查它是否是全屏。 NSNotifications 的 UserInfo 字典也是 nil。

谢谢,

【问题讨论】:

  • 当窗口退出全屏时,您不应该收到NSWindowWillCloseNotification。你是怎么确定的?您是否可能与NSWindowWillExitFullScreenNotificationNSWindowDidExitFullScreenNotification 通知发生冲突?
  • 绝对确定我收到了该通知,但不是针对我自己的窗口!检查答案,看看它是NSToolbarFullScreenWindow

标签: objective-c macos nswindow nsnotifications


【解决方案1】:

原来我是从不是我NSWindowController 的窗口的窗口收到通知的!

打印出我收到的通知,我们可以看到我收到了NSWindowWillCloseNotification 呼叫NSToolbarFullScreenWindow

NSConcreteNotification 0x6080002578b0 {name = NSWindowWillCloseNotification; object = <NSToolbarFullScreenWindow: 0x100d57f50>}

我应该这样写我的观察者方法,而不是为对象传递nil

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleWindowWillClose:) name:NSWindowWillCloseNotification object:self.window];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    相关资源
    最近更新 更多