问题标签 [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 投票
1 回答
591 浏览

cocoa - 在 NSPanel 中初始化控件

我的应用中有一个 NSPanel,用作数据导出功能。

最初显示面板时如何初始化面板中的控件?(即使用 NSDefaults)。当窗口/面板打开时似乎没有触发事件,我可以恢复默认设置(基本上只是恢复 NSPopupButton 的值)。

目前,我在我的 App Delegate 类中使用“[NSApp beginSheet...]”打开面板。我应该改用 NSWindowController 子类吗?

0 投票
0 回答
93 浏览

objective-c - 在基于文档的应用程序中为多个文档重用面板

我正在创建一个基于文档的应用程序,并且我想使用一个可以在多个打开的文档中重用的 NSPanel。

我应该能够为第一个打开的文档更改 NSPanel 中的设置,然后单击另一个打开的文档。当我单击第二个打开的文档时,NSPanel 应该更新以显示活动文档的设置。

构建此设置的正确方法是什么?

0 投票
1 回答
336 浏览

cocoa - 更改 NSPanel 中的标题栏高度

我正在尝试更改 NSPanel 的标题栏高度。我尝试了以下方法,但没有按预期工作:

0 投票
2 回答
1097 浏览

objective-c - 在界面生成器中未选中“标题栏”的 NSPanel 不会出现

所以我以为我已经覆盖了我的基础,但显然我错过了一个或两个关键步骤。

当按下 NSStatusItem 时,我有一个显示 ( makeKeyAndOrderFront:) 的 NSPanel。效果很好,但是当 NSPanel 显示标题栏时,面板也是可拖动的。(这是不希望的。)

第一个屏幕截图显示了在界面生成器中启用了“标题栏”的面板,位于外观类别中。(抱歉模糊,事情目前仍处于锁定状态。)

第一张截图

在 Interface Builder 中所做的唯一更改是取消选中“标题栏”复选框。然后我保存并重新运行,这就是您在第二个屏幕截图中看到的内容。虽然出现了轻微的阴影,但面板没有。

在此处输入图像描述

我尝试过的事情:

  • 我已经对 NSPanelYES进行了子类化,canBecomeKeyWindowcanBecomeMainWindow在进行了一些研究之后返回,但是(在子类化之前)这些方法都返回NO了,无论我是否使用标题栏。所以我认为这不是问题。

  • 我已确保正确设置了 NSPanel 的框架。它具有良好的高度,并且原点设置也正确。

编辑:忘记提及:

该应用程序是一个仅限菜单栏的应用程序。在下面的屏幕截图中,请注意添加了一个附加条目Info.plist来强制执行此操作。

信息清单

0 投票
1 回答
2040 浏览

objective-c - 如何判断 NSPanel 何时获得焦点或成为关键?

我正在 XCode4 中编写一个 Cocoa/Objective-C 应用程序,我需要知道我的首选项面板何时打开。我需要一些像windowDidBecomeKey这样的回调;我试图遵循这个问题中提供的解决方案,但既没有也没有windowDidBecomeKey作为windowDidExpose委托方法出现(但其他方法,如windowDidLoad,windowWillLoad等)。

为了澄清我所说的“不显示为委托方法”的确切含义,我的意思是当我开始输入方法名称时它们不会出现在自动完成中。无论如何,我确实尝试定义它们,但它们从未被调用过。

对象是否NSPanel缺少这些方法,还是我需要做更多的事情?

目前,我有一个界面PrefWindowController

PrefWindowController.h:

PrefWindowController.m:

当应用程序启动时从 .xib 加载窗口时,windowDidLoad会触发并显示上面定义的通知。我这样做只是为了测试方法实际上被调用了。

关于如何在面板成为关键或成为焦点时获得回调的任何建议都会非常有帮助。

更新:

我向windowDidBecomeKey窗口控制器添加了一个方法,如下所示:

PrefWindowController.h:

PrefWindowController.m:

我第一次打开窗口时会记录测试消息,但在我的main.m文件中的返回行上出现错误:

线程 1:程序接收信号:“EXC_BAD_ACCESS”

0 投票
2 回答
403 浏览

cocoa - iWork 风格的检查器面板中的选项卡

如何获得 iWork '09 Inspector 中出现的选项卡按钮的外观NSPanel

我能得到的最接近的是NSSegmentedControl“小广场”风格。不幸的是,至少在 Snow Leopard 下会导致灰色选择而不是蓝色选择。

任何想法 Apple 为在各种 iWork '09 Inspector 中获得蓝色水色风格选择做了NSPanel什么?

0 投票
1 回答
365 浏览

cocoa - 自定义工作表:无法单击按钮

我使用了这个来源http://www.cats.rwth-aachen.de/library/programming/cocoa

创建我的自定义工作表。

NSPanel在现有的 .xib 文件中创建了一个对象并与IBOutlet

我的源代码:

。H

.m

所以callPanel工作正常,工作表出现,但我无法与工作表上的控件(带按钮)交互。他们不会对点击做出反应(甚至在视觉上)。

问题出在哪里?

0 投票
1 回答
235 浏览

cocoa - NSPanel 出现在错误的空间

所以,我正在查看这个源代码,尝试使用 NSPanel 制作带有自定义弹出框的状态栏应用程序之一 -

一切正常,花花公子。单击在大多数情况下有效的菜单调用[panel makeKeyandOrderFront:nil]- 窗口通常会在其他所有内容前面的正确空间中弹出。

但是,如果我移动到全屏空间(例如,全屏模式下的 Xcode)并尝试在那里使用菜单应用程序,面板会在错误的空间(之前出现的空间)中弹出,并且没有任何内容显示在预期中空间。只有在第二次单击后,它才会出现在正确的位置。

有人对这种现象有解释吗?

0 投票
1 回答
180 浏览

objective-c - 显示一张工作表,但仍然让我的主应用程序正常工作

loadFile方法NSTimer随着时间的推移开始加载一个文件,而不会在while循环中阻塞应用程序。这个定时器不是用代码的第一位触发的,而是用第二位触发的。问题是第二位将工作表显示为面板样式窗口,而不是工作表。

如何获得仍然可以工作的工作表?

显示工作表但未完成任何工作

显示窗口和工作完成

0 投票
1 回答
205 浏览

xcode - NSPanel 虽然是模态但失去焦点

我的一个 NSPanel 有一个奇怪的问题。启动我的应用程序,我使用一个简单的面板,只有一个 NSTextField 和一个 NSButton 来获取玩家的名字。在我的应用程序上处理其他一些东西时,突然间面板在启动应用程序时不再集中。不过,该按钮确实有效,但文本字段拒绝聚焦并接受任何输入。

任何想法表示赞赏。

干杯,

活的