OSX:当用户点击cmd + w键时阻止窗口关闭

时间:2015-05-11 09:24:46

标签: macos cmd window

在我的MAC应用程序中,在一个用例中,我向用户提示一个窗口并给他2个选项(比如按钮保存和取消)。我想强制用户选择2个按钮中的任何一个来关闭窗口。

但是目前我发现如果用户在窗口有焦点时点击“Command + w”键,窗口就会关闭。在.xib资源文件中,我取消选中“关闭”选项,但只禁用窗口UI中的关闭选项。

如何确保我的窗口忽略“Command + w”键并保持原样而不关闭。

还尝试通过在awakeFromNib方法中添加以下代码来删除通知,但没有帮助。

[[NSNotificationCenter defaultCenter] removeObserver:NSWindowWillCloseNotification ];

还试图实现“windowShouldClose”委托方法并返回NO,但是从不调用此方法。文档也说这种方法不可靠。

1 个答案:

答案 0 :(得分:0)

您应该使用package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.fxml.FXMLLoader; public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Main.fxml")); Scene scene = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } 进行此类提示,可能在窗口中作为工作表运行。这样可以避免关闭它的问题。

在任何情况下,窗口的委托都可以实现NSAlert来控制是否允许窗口关闭。您可以通过声明它采用-windowShouldClose:协议并将窗口的NSWindowDelegate出口连接到该对象来使对象(通常是窗口控制器)成为其委托。