5、《Fenestra应用开发:窗口行为、通知机制与功能实现》

《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组合键,观察窗口的响应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值