《Fenestra应用开发:窗口行为、通知机制与功能实现》
1. 重写窗口行为
在应用开发中,窗口的关闭行为是一个重要的设计点。根据苹果人机界面指南,非基于文档的应用在主窗口关闭时通常应该退出。以Fenestra应用为例,它没有管理文档,只有一个窗口,且窗口关闭后不进行任何处理,也无法重新打开窗口。因此,我们可以通过委托机制让窗口在关闭时通知控制器,然后控制器向NSApp发送终止消息,使应用退出。
设置窗口委托有两种方式:
- 在 awakeFromNib 方法中设置:
def awakeFromNib
@logWindow.delegate = self
record('')
end
- 在Interface Builder(IB)中设置:IB将对象的委托视为其输出口之一,可在“Connections inspector”中设置委托。
无论采用哪种方式,控制器都需要定义 windowWillClose 方法来处理“窗口即将关闭”事件:
def windowWillClose(notification)
NSApp.terminate(self)
end
实践操作
- 阻止窗口关闭 :可查看窗口的属性来阻止窗口关闭,尝试使用Command - W组合键,观察窗口的响应。
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



