【问题标题】:Application loses focus hide window应用程序失去焦点隐藏窗口
【发布时间】:2010-10-23 02:20:27
【问题描述】:

当应用程序失去焦点时,我一直试图隐藏我的应用程序主窗口。

测试后

- (void)applicationDidResignActive:(NSNotification *)aNotification 
{

[window orderOut:self];

  _isShown = NO;

}

然而,这似乎只工作一次,在我用

把我的窗口带回来之后
[window makeKeyAndOrderFront:self];

[window orderFrontRegardless];

它不再起作用了,我做错了什么?

【问题讨论】:

  • _isShown 在其他地方是否有意义?您是否在某处更改应用程序委托?究竟什么“不再有效”?应用程序是否成功激活?窗口是否根本不会第二次隐藏? applicationDidResignActive: 方法是否不再被调用?
  • _iSShown 是我维护的一个内部属性,它不会在其他任何地方调用 b/c 它只能工作一次。该窗口不会第二次隐藏,并且再也不会调用 applicationDidResignActive。
  • _isShown 是一个变量;因为它的值不是指向函数的指针,所以它不能被调用。你如何在其他地方使用它的价值?您还没有回答我的其他两个问题:您是否正在更改应用程序委托?应用激活成功了吗?
  • 彼得,我的意思是 _isShown 的唯一位置是在我的头文件中。我根本没有更改应用程序委托,是的,它已成功激活。我应用了 applicationDidBecomeActive 并发送了一个 NSLog 以确保是这种情况。需要注意的一点是,第一次隐藏窗口时它可以工作,但第二次方法永远不会被调用。

标签: objective-c cocoa xcode


【解决方案1】:

在我看来,您实际上想要一个 NSPanel,或者至少让您的窗口为 -hidesOnDeactivate 返回 YES。

【讨论】:

  • 将方法 hidesOnDeactivate 设置为返回 YES 不起作用:(我不想要 Panel b/c 我的整个应用程序是 1 个窗口,当它不是主要焦点时需要隐藏。
  • 我也试过了,[self setHidesOnDeactivate:YES];在我的 NSWindow 子类中,这也不起作用。
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 2013-01-09
  • 2014-03-08
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2011-08-05
相关资源
最近更新 更多