问题标签 [nswindow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
248 浏览

subclass - 从图像中绘制自定义 NSWindow

我有一些图像(4 个角、一个标题栏(+ 关闭按钮)、一个底栏和一个填充)来制作一个 NSWindow。但是我不知道在drawRect:方法中写什么来使它成为一个 NSWindow。我应该从哪里开始?

0 投票
4 回答
4689 浏览

objective-c - 如果您不在 Objective-C 中的应用程序中,如何将窗口放在前面

有没有办法在应用程序中不使用蜜蜂来制作“makeKeyAndOrderToFront”?

如果我在 Safari 中并且在菜单栏中有一个 MenuItem 到我的应用程序,在我按下它之后,我想在前面显示我的应用程序的一个窗口(makeKeyAndOrderToFront 会在你在应用程序中时这样做)。

我可以使用哪种方式?以及如何为这个窗口设置动画(如 Tweeties Add new Tweet -> atebits.com)。

谢谢!

0 投票
2 回答
324 浏览

cocoa - 旧窗口关闭后新窗口的位置

我有一个允许多个窗口的应用程序。我有一个奇怪的错误,如果我反复打开和关闭窗口,新窗口在屏幕上的位置越来越低。如果我保持窗口打开,我会期待这一点,但似乎 OS X 窗口平铺机制不知道我的窗口何时关闭。

可能相关的注释:我正在使用垃圾收集。这不是基于文档的应用程序。当我关闭一个窗口时,相应的菜单项会从“窗口”菜单中删除。

任何关于我可能做错的提示将不胜感激。谢谢!

0 投票
1 回答
124 浏览

cocoa - Cocoa:创建具有可变数量界面元素的窗口

我有一个窗口,其中包含未知数量的文本字段,由远程服务器的内容决定。

在高层次上,我应该怎么做?创建一个自定义视图或创建一个带有支持 NSWindowController 的空窗口,然后在打开窗口时向其中添加内容?

我已经看过 O'Reilly Cocoa 书中的示例,这些示例有效地创建了自定义 NSView。8年后,这是正确的做法吗?

0 投票
1 回答
1001 浏览

cocoa - NSDocument 子类没有被 NSWindowController 关闭?

好的,我对 Cocoa 和 Objective-C 以及一般的 OOP 还很陌生。

作为背景,我正在开发一个可扩展的编辑器,它将用户的文档存储在一个包中。这当然需要一些“乐趣”来解决一些问题NSFileWrapper(即有点偷偷摸摸的编写和加载过程,以避免NSFileWrappers为包中的每个文档制作)。我得到的解决方案本质上是将我的NSDocument子类视为只是一个外壳——使用它来为捆绑包创建文件夹,然后将文档的实际内容传递给其他方法。

不幸的是,在某些时候,我似乎完全搞砸了狗。我不知道这是怎么发生的,但是关闭文档窗口不再释放文档。即使窗口成功关闭,文档对象似乎也没有收到“关闭”消息或任何相关消息。

最终结果是,如果我启动我的应用程序,创建一个新文档,保存它,然后关闭它,然后尝试重新打开它,文档窗口永远不会出现。通过一些创造性的子类化和NSLogging,我设法弄清楚文档对象仍在内存中,并且仍然附加到NSDocumentController实例,因此尝试打开文档从未通过NSDocumentController's“嗯,当前打开那个”检查。

我确实有一个NSWindowControllerNSDocumentController实例,但我已经完全从我的项目中清除了它们。我已经覆盖了几乎所有NSDocument试图找出问题所在的方法。据我所知,我的 Interface Builder 绑定都是正确的——主菜单中的“关闭”附加到performClose:第一响应者等,我也尝试过使用新的未受污染的 MainMenu 和 Document xibs。

我认为我的捆绑编写代码可能有些奇怪,所以我基本上将其全部删除并从头开始,但这似乎不起作用。我拿出我的-init方法覆盖,这也没有帮助。我在这里没有任何简单文档应用程序的来源,所以我没有尝试下一个合乎逻辑的步骤(在readFromUrlandwriteToUrl方法中用已知的工作代码替换我的代码)。

我已经在大约 16 个小时的不间断故障排除中遇到了这个问题,不用说,我已经走到了尽头。如果我想不通,我想我会从头开始尝试这个项目,使用更多的代码和基于捆绑文档混乱的强度。

0 投票
2 回答
14695 浏览

cocoa - addSubview 和自动调整大小

如何将视图添加到窗口,以便调整视图大小以适应窗口框架?

问题

我正在制作一个包含 2 个视图的工作表窗口,其中一次只有一个可见,因此视图与窗口的大小相同很重要。我的问题是 view0 适合,而 view1 不适合,反之亦然。我不知道如何给它们与窗口相同的大小。

可能的解决方案

我可以确保两个视图在 Interface Builder 中具有完全相同的大小,然后它就可以工作了。但是我正在寻找一种以编程方式执行此操作的方法。


视图0截图

您可以在下面看到顶部和右侧的自动调整大小问题,其中视图以某种方式被剪裁。

视图0
(来源:flickr.com


视图1的屏幕截图

此视图已正确调整大小。

视图1
(来源:flickr.com


这是我的代码

可以在将视图添加到窗口之前调整它们的大小吗?还是像我现在所做的那样,在更改窗口框架的同时逐一添加视图会更好。你怎么做呢?

0 投票
1 回答
2445 浏览

cocoa - 如何使用 NSWindowDidExposeNotification

当另一个窗口变得可见时,我正在尝试更新另一个窗口。所以我找到了 NSWindowDidExposeNotification 并尝试使用它,所以我在 awakeFromNib 中写道:

并实现了方法

但它永远不会被调用,这很奇怪。我在这里做错了什么?

0 投票
2 回答
12215 浏览

objective-c - 如何打开 NSWindow 并选择窗口并获得焦点?

我正在尝试使用以下代码打开 NSWindow:

窗口打开正常,但前一个窗口仍然是 mainWindow 并处于焦点。我尝试了以下代码来强制主窗口,但它不起作用。该窗口仍然有一个禁用的标题栏,并且不接受关键事件等。

我似乎能够让前一个窗口失去焦点的唯一方法是如果我在调用 showWindow: with [[NSApp mainWindow] close]; 后关闭窗口:

有任何想法吗?

0 投票
2 回答
1658 浏览

cocoa - 为什么我的 NSWindow 第一次只接收 mouseOver 事件?

我有一个应用程序,其中使用 orderOut 和 orderFront 显示和隐藏无边框窗口。当它可见时,我希望它在鼠标移到它上面时成为关键窗口。到目前为止,我已经这样做了:

  • 在 awakeFromNib 中,我已将其第一响应者设置为自身。
  • 在窗口的构造函数中,我将接受鼠标事件设置为 YES。
  • 在 mouseMoved 方法中,我使用 makeKeyAndOrderToFront。

我的问题是,这只适用于我第一次将鼠标移到窗口上。之后,它不会收到任何 mouseOver 事件。我试过检查 firstResponder 但据我所知,它永远不会从窗口改变。

有什么想法可以让这个工作吗?

0 投票
1 回答
390 浏览

objective-c - NSWindowController 和 isWindowLoaded

我有一个 NSWindowController 并像这样初始化它;

我展示这样的窗户;

现在的问题是我需要该窗口上某些控件的信息。但是如果它还没有加载,我不想加载窗口,因为那样我就可以使用默认值。我应该使用 isWindowLoaded 吗?@property 访问单例?或者这里推荐什么?(如果@property,那么也请给我只读的非原子属性。)