首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测NSPanel何时因失去焦点而关闭?例如,用户在NSPanel窗口外单击(窗口?)

如何检测NSPanel何时因失去焦点而关闭?例如,用户在NSPanel窗口外单击(窗口?)
EN

Stack Overflow用户
提问于 2014-08-28 19:48:49
回答 1查看 332关注 0票数 1

我有一个通用的NSPanel窗口,我在应用程序中使用它作为首选项窗口。我有一个选择器,每当窗口关闭时我都会打电话给它。该选择器的目的是保存用户选择的首选项的状态(没有“保存”按钮)。

我有一个NSButton (“关闭”),我很容易设置它来调用我的关闭选择器。

我将其设置为,当用户单击NSPanel左上角的红色X时,也会调用选择器:

代码语言:javascript
复制
NSButton *closeButton = [[self window] standardWindowButton:NSWindowCloseButton];
[closeButton setTarget:self];
[closeButton setAction:@selector(myCloseSelector:)];

这工作得很好。但我的问题呢?如果用户单击外部的,窗口NSPanel也会关闭。例如,如果他们拿起鼠标,点击弹出的NSPanel下方的浏览器窗口。这也关闭了窗口。

我如何捕捉我的NSPanel失去焦点和关闭?我需要确保当这种情况发生时,我也会接到我的选择器的电话。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 20:49:41

使我的NSWindowController成为NSWindowDelegate的代表。

myWindowController.h

代码语言:javascript
复制
@interface myWindowController : NSWindowController <NSWindowDelegate>

然后将myWindowController设置为我的NSPanel的委托。

现在我可以实施:

代码语言:javascript
复制
- (void) windowDidResignKey:(NSNotification *)notification {
    NSLog(@"Houston...we lost a panel.");
}

一切都很顺利!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25556867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档