问题标签 [nspanel]

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 投票
2 回答
631 浏览

macos - NSSavePanel 在优胜美地崩溃

我正在使用NSSavePanel保存图像。

我使用了添加到NSSavePanel的 IKSaveOption。当保存面板尝试为窗口打开工作表时,它会崩溃说 -

*** -[IKSaveOptionsContainer _didChangeHostsAutolayoutEngineTo:]、/SourceCache/AppKit/AppKit-1343.14/Layout.subproj/NSView_Layout.m:577 中的断言失败 - 如果 _didChangeHostsAutolayoutEngineTo:YES,则应将自动调整掩码转换为约束。

我正在关注这段代码:

此代码适用于 Maverick,但不适用于 Yosemite。新的 OS API 中是否有任何布局更改?

0 投票
4 回答
2119 浏览

objective-c - unlockFocus 调用次数过多

我单击NSButton (openPane位于我的 OS X 应用程序主窗口上的 l) 以NSPanel (myPanel使用以下方法显示 a ):

一切都按预期工作,除了我第一次单击按钮(openPanel)时在调试区域中得到以下描述:

Panel的属性选择如下:

我浏览了网络,但找不到任何解释。有谁知道为什么会发生这种情况或如何解决?

0 投票
1 回答
215 浏览

macos - NSPanel 导致后续使用 NSOpenPanel 产生异常

我有一个使用 NSOpenPanel 的应用程序,以便用户可以选择多个文件进行导入,并且还有一个典型的首选项面板。首选项面板存储在.xib文件中。

用户调用首选项面板后会出现问题。在此之前 NSOpenPanel 工作得非常好,所有逻辑都在完成块中执行,并且可以一次又一次地重新调用。但是,一旦用户选择了 Preferences 选项并关闭了该表,那么随后的每次调用-(IBAction)addFiles:都会导致异常:

它们是这样声明的:

并使用:

例外是:

这一定与我打电话和/或解雇 NSPanel 的方式有关,但我不知道是什么。我真的很感激一些帮助。

0 投票
0 回答
82 浏览

objective-c - 无法在菜单项的弹出面板中粘贴文本

我有一个菜单应用程序,我从一个菜单项启动一个 NSPanel:当用户单击菜单项时,我懒惰地实例化一个自定义 NSWindowController(只是第一次),然后我显示它调用 showWindow:

自定义 NSViewController 链接到一个 xib 文件:

在此处输入图像描述

这就是我创建它的方式:

问题是,如果我尝试在这两个文本字段之一中粘贴一些文本,它不会粘贴任何内容并且会发出哔哔声。

编辑

我设法恢复了原始菜单(我不得不从另一个项目的 xib 中复制它,因为只有原始菜单被识别),我以这种方式修改了addFeedController访问器:

我还修改了显示窗口的方法:

第一次面板立即出现,没有问题。但是当我关闭面板并尝试第二次启动它时,它不会出现。

0 投票
2 回答
325 浏览

cocoa - windowNumbersWithOptions: on Yosemite 无法返回我的应用程序的 NSPanel 窗口

我有一个基于文档的应用程序,有一个主文档窗口和几个显示相关信息的“卫星”NSPanel 窗口。它们不是浮动的,它们可以(并且确实)成为关键,并且似乎与主窗口位于同一层。

我尝试像这样实现显示/隐藏操作:如果面板不可见 - 显示它。如果它是可见的,但不是前面 - 让它在前面。如果它是可见的并且在前面 - 隐藏它。

为此,我需要知道 NSPanel 是否是“最前面的”。遗憾的是没有 NSWindow API 存在。我试图用它windowNumbersWithOptions来比较我的面板的 z 顺序。

唉,我收到的数组只包含一个数字 - 用于我的主文档窗口。我可以在“窗口”菜单中看到我的面板,我可以单击它们将它们带到前面,我可以关闭它们并使用它们 - 但我无法通过 windowNumbersWithOptions 获取它们的编号:

任何人的想法?

0 投票
3 回答
3293 浏览

macos - 允许 NSWindow (NSPanel) 在全屏应用程序上方浮动

我正在尝试添加一个小窗口,该窗口可从系统中的任何位置向主应用程序提供“快速输入”。

用户可以按下热键,窗口弹出,并浮动在所有其他窗口之上。

在大多数情况下,这不是什么大问题。我可以将 NSWindow 配置为:

我还可以将其设为带有NSNonactivatingPanelMask选项集的 NSPanel。

唯一的问题是:即使用户在包含全屏应用程序的空间中,如何才能使窗口在屏幕上弹出?

我知道当应用程序是LSUIElement=true(在 Dock 中没有位置的应用程序)时这是可能的,但我的不是。

0 投票
1 回答
1359 浏览

swift - 使用 NSPanel 进行用户输入。不再开放

我想显示一个“NSPanel”供用户输入新文件夹的名称。为什么是 NSPanel?因为它看起来棒极了!它承载一个 TextField 和一个 PushButton 来确认名称。单击时它也应关闭窗口。

在此处输入图像描述

它在我的菜单中单击“添加”按钮时显示。当单击“完成”按钮时,它也会关闭NSPanel。但是当我再次单击“添加”时,它不再显示了。当我通过标题栏中的普通“关闭按钮”关闭它时,也会发生这种情况。所以它与“完成”-PushButton 没有明确的关系。我还测试func windowWillClose(notification: NSNotification)了在任何一种情况下都不会触发的实现。可能是什么问题呢?此外,它是否每次都需要成为一个“新”窗口?或者我是否正确地将其用于用户输入?我的意思是它只是被实例化一次然后“显示”和“未显示”还是我错了?

所以我做了一个新的 Cocoa-Class - Subclass of NSWindowController- 并让 xCode 也为它创建一个 .xib。在那个 .xib 中,我“设计”了NSPanel. 我没有勾选visible at launch,当单击菜单按钮时,窗口不会出现。我还在我的 Cocoa Class 中连接了一个IBOutletfor the 。NSPanel我现在的班级看起来像这样:

在我的主类中,我将其声明为如下变量:

然后override func awakeFromNib()作为:

以及在单击处理程序中,例如:

现在。当我单击addClicked()并被调用时,窗口会按预期显示。美好的!我输入一个名称并点击“完成”按钮,它会正确关闭窗口。也很好!但是当我再次单击时,说要添加另一个文件夹,该窗口不再显示。我还以完全相同的方式创建了一个首选项窗口。但是里面有一个 Window 而不是 NSPanel。这完全可以正常工作。

所以我显然混淆了一些东西或忘记了一些东西。会是什么呢?我公开承认这是我第一次在遵循教程之外使用任何类型的窗口。所以我显然没有掌握它的整个概念。我在 Apples Developer Guide 中阅读了有关 windows 的信息,这有点道理。但是......好吧,目前不起作用。我在“滥用”NSPanel吗?不应该是这种情况,因为它继承自NSWindowor ?

0 投票
1 回答
7503 浏览

operating-system - 如何将 NSURL 转换为 CFURLRef

Apple 提供了创建 PDF 文档的示例代码。但它使用 CFURLRef

NSPanel savepanel 给出 NSURL。

我无法将 NSURL 转换为 CFURLRef

输出是

2016-04-22 00:34:26.648 XXX 分析[12242:813106] CFURLRef AnalysisReport.pdf -- file:///Users/xxxxxx/Library/Containers/com.xxxxxx.xxxnalysis/Data/

转换我找到的代码

输出是

2016-04-22 00:37:20.494 XXX 分析[12325:816505] NSURL 文件:///Users/xxxxxx/Documents/xxxnalysis.pdf

最后 PDF 文件被保存,但是当 NSPanel 关闭时程序崩溃。

0 投票
0 回答
101 浏览

swift - 单击时 NSSavePanel 移动位置

我的 NSSavePanel 行为异常。每当我单击它(通常允许您拖动窗口的任何区域)时,它都会在屏幕上向下移动几个像素。仅当我单击工具栏的大空白区域等空白区域时才会发生这种情况。

以下是相关代码:

为什么会发生这种情况,我该如何解决?对于奖励积分,NSSavePanel 在出现时不会成为活动窗口。如果有人也知道如何解决这个问题,将不胜感激。

0 投票
0 回答
99 浏览

objective-c - NSSavePanel 在应用程序之间出现不同,即使使用相同的代码

我在项目中遇到了 NSSavePanel 问题,因此为了尝试隔离问题,我在默认窗口的 viewDidLoad 中创建了一个仅包含 NSSavePanel 代码的测试项目。

测试项目

我用来显示 NSSavePanel 的代码:

出现的保存面板如下所示:

在此处输入图像描述

真正的项目

当我在现有应用程序中使用相同的代码(图像文件名除外)时,我得到一个 NSSavePanel,如下所示:

在此处输入图像描述

主要区别:

  • 出现的窗口未激活
  • 标题栏不与窗口的其余部分分开
  • 每当您单击不是按钮或文本字段的东西时,窗口就会在屏幕上跳下几个像素,就好像我打算拖动它一样。

这里到底发生了什么?显然,问题不仅仅是那段代码。有谁知道它是什么?