我准备比较三种语言的课程中的第二个例子是处理窗口调整大小事件。它在Java和C#中等效地工作,但在Mac Cocoa框架中,NSWindow resize事件的委托处理程序永远不会被调用。我添加到头文件
- (void)windowDidResize: (NSNotification *)notification;
和实施文件
- (void)windowDidResize: (NSNotification *)notification
{
NSString *name = notification.name;
NSLog (@"Window was resized, notification %s", name);
}
当我调整窗口大小时,永远不会发出消息。我究竟做错了什么?鼠标事件可以正常工作。 [MacBook Pro OSX 10.6.8,Xcode 3.2.6 64位]。
答案 0 :(得分:4)
我的2美分代表5。(同时显示代表和通知,请选择一个。。)
import Cocoa
class ViewController: BaseController, NSWindowDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.makeItListenZoom()
}
override func viewDidAppear() {
self.view.window?.delegate = self
}
private final func makeItListenZoom(){
NotificationCenter.default.addObserver(forName: NSWindow.didResizeNotification, object: nil, queue: OperationQueue.main) { (n: Notification) in
print("didresize---")
}
}
func windowDidResize(_ notification: Notification){
print("windowDidResize")
}
}
答案 1 :(得分:0)
您的obj需要是代表,或者您已明确注册通知中心以获取通知