NSWindowController PerformClose:方法不起作用

Luc*_*uca 0 cocoa objective-c keydown nswindow nswindowcontroller

我有一个子类,当我按键盘上的 esc 键时,NSWindowController我需要在其中放置代码以关闭关联。NSWindow

我发现在方法中keyDown:esc 按钮没有被处理,所以在阅读了本网站和互联网上的其他问题后,我发现最好的解决方案是cancel:在控制器中提供一种方法。事实上,这项工作,我重写了该cancel:方法,NSLog当我按 esc 键时,我放在那里的方法效果很好。

问题是,如果我NSLog用一个简单的替换[self.window performClose:self],这不起作用,当我按下 esc 按钮时,什么也没有发生,并且会播放拒绝操作的标准系统蜂鸣声。我想念什么来简单地关闭我的NSWindow代码?谢谢

csc*_*sch 5

看一下:

\n\n

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/performClose:

\n\n

有趣的是:

\n\n
\n

...如果窗口没有\xe2\x80\x99t 关闭按钮或者可以\xe2\x80\x99t 关闭(例如,如果代理对 windowShouldClose: 消息回复“否”),\n 系统会发出警报声。

\n
\n\n

我想[self.window close]这就是你想要的。如果您只想隐藏窗口(并稍后再次显示),您可以使用[self.window orderOut:self]

\n