首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当焦点丢失时NSPanel不会隐藏

当焦点丢失时NSPanel不会隐藏
EN

Stack Overflow用户
提问于 2020-12-23 17:21:51
回答 1查看 79关注 0票数 1

我正在尝试创建一个像Spotlight这样的窗口。在Spotlight中,当背景被点击时,它应该隐藏起来。我试着用NSWindow来做这件事,但没有成功,但我相信使用NSPanel可以解决这个问题。但是,即使使用NSPanel,窗口也不会隐藏。这是我正在使用的代码。

代码语言:javascript
复制
let panel = NSPanel(contentRect: CGRect(x: 0, y: 0, width: 200, height: 200), styleMask: [.titled, .nonactivatingPanel], backing: .buffered, defer: true)
panel.level = .mainMenu
panel.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
panel.orderFrontRegardless()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-23 20:19:32

这是由于使用了窗口级别(在所有窗口之上的.mainMenu),所以您需要通过委托方法显式地隐藏它

因此,假设您在控制器中创建了窗口/面板,请使控制器成为window代理

代码语言:javascript
复制
panel.delegate = self

并实现像这样的东西

代码语言:javascript
复制
extension ViewController { // << your controller class here
   func windowDidResignKey(_ notification: Notification) {
       if let panel = notification.object as? NSWindow {
          panel.close()
       }
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65421847

复制
相关文章

相似问题

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