【问题标题】:How to make a Status Bar Application catch 'applicationDidResignActive:' with other Status Bar Apps?如何使状态栏应用程序与其他状态栏应用程序一起捕获“applicationDidResignActive:”?
【发布时间】:2012-12-31 15:46:55
【问题描述】:

现在我正在开发一个状态栏应用程序,我每次都需要知道应用程序何时失去焦点。所以我目前正在为此使用applicationDidResignActive:,但是当我打开另一个状态栏应用程序的菜单时,这并没有引起注意。
我如何让applicationDidResignActive:(或任何其他方法)在我的应用每次失去焦点时捕捉到,即使打开另一个状态栏应用也是如此?

【问题讨论】:

标签: objective-c xcode macos cocoa nsapplication


【解决方案1】:

我认为您真正要寻找的是窗口何时失去焦点。

您可以使用以下NSWindowDelegate方法:

windowDidResignMain:

您还必须将canBecomeMainWindow 设置为YES

- (BOOL)canBecomeMainWindow {
    return YES;
}

确保将其连接到代理,您应该没问题。

【讨论】:

  • 很抱歉,我已经这样做了,但它不起作用。当我打开另一个状态栏应用的菜单时,我没有收到任何通知
  • 你连接代理了吗?
  • 你已经对窗口进行了子类化,将canBecomeMainWindow设置为YES
  • 是的,我的 NSWindow 子类中有 canBecomeMainWindow 方法,我将其设置为 YES
  • 我发现我的 NSWindow 必须有一个标题栏才能使该方法起作用。但我需要它没有标题栏。有没有办法解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 2021-05-14
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多