问题标签 [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.
objective-c - Cocoa:NSPanel 失去父级和其他奇怪的行为
我有一个NSPanel
奇怪的行为问题,并创建了一个示例应用程序来演示这种行为。
该应用程序是从 Xcode 4 的模板生成的,只需创建一个面板,然后根据按钮按下打开和关闭它:
我观察到的奇怪行为:
- 在 Lion 下,第一次打开面板后,面板跟随主窗口,这是正确的行为。但是,在关闭它然后重新打开它之后,它不再跟随主窗口。
- 在 Snow Leopard 下,关闭面板时,主窗口也会关闭!
编辑:为了清楚起见;我期望的行为是让面板在主窗口移动时跟随主窗口;并在面板关闭并随后重新打开后实现这一点。此外,我希望面板和主窗口在 Snow Leopard 和 Lion 下的行为方式相同。
代码的重要部分在这里:
注意:我在方法中添加了不必要的setParentWindow
调用,openPanel
以断言每次打开面板时都会重置父窗口;然而,它没有任何区别。
有人可以解释我做错了什么吗?
编辑:对于实现文件中的缺失存在一些混淆@synthesize window = _window
,但我刚刚打开了另一个项目示例,该示例是我为测试内存泄漏行为而创建的,但它也不存在。我使用的是 Xcode 4.4,所以这可能是一个错误,但我认为项目模板没有改变。
cocoa - 激活时,菜单栏应用程序中的关于面板不在最前面
我有一个位于菜单栏中的应用程序,没有主菜单或停靠图标。我有一个触发按钮[NSApp orderFrontStandardAboutPanel:sender];
。单击该按钮时,有时“关于”面板会位于最前面。然而,其他时候,关于面板打开,但在其他正在运行的应用程序窗口后面(要清楚,在其他应用程序的窗口后面,而不是在我的菜单栏弹出窗口后面)。我什至不确定从哪里开始调试这个 - 有什么建议吗?
谢谢。
objective-c - 试图从一个类中获取一个 NSPanel 以在不同的类中查看?
我有:
在 MyWindowController.h 中,有:
后来:
我想在整个程序中使用这个面板。在我的 HistoryController.m 中,有:
现在我可以成功访问该方法(一些 NSLog 调用验证了这一点),但我根本无法真正让 NSPanel 出现。这是那里的一些代码:
如果我将我的历史视图中的按钮链接到 FirstResponder 操作“viewInvoice”,我可以弹出面板,但是我似乎无法通过参数(即发票号)发送。
xcode - 此面板是否正确显示?
我在 Snow Leopard 上运行 xcode 4.2。我正在尝试在 Mac 应用程序中调出一个面板,该面板将显示在主窗口旁边。这是代码:
该面板似乎运行良好,其控件似乎可以正常工作。但是后来,当我创建一个自定义对象并尝试将其分配给 NSViewController 的代表对象属性时,分配不会发生。执行以下行会将代表对象的值保留为 nil:
我尝试为 ViewController 提供一个属性来引用 FieldInfo 对象,并在我尝试分配代表对象的同一位置分配该属性。效果是一样的——在赋值之后 fieldInfo 属性的值保持为 nil。这让我觉得 ViewController 有问题。也许我错误地从笔尖中检索到它?
谢谢
objective-c - 无法在应用程序启动时隐藏 NSFontPanel
我正在为我想使用 NSFontPanel 的应用程序创建一个功能。我不想在我的应用程序中有“字体”菜单。
单击菜单项时打开和关闭字体面板是这样完成的
它工作正常。当我尝试在应用程序启动时关闭字体面板以防显示时出现问题。我试过了
或者
我也尝试过没有 if 语句,仍然没有运气。如果在应用程序关闭时显示面板,则在应用程序打开时它总是会再次弹出。我还尝试在我的应用委托的 appWillTerminate 方法中关闭字体面板。相同的行为。
将不胜感激任何提示。提前致谢,
弗洛
objective-c - 使调色板永久活跃/集中?
有没有一种简单的方法可以让我的应用程序的浮动工具面板永久激活?它们都与打开的文档相关,因此没有理由让它们在任何时间点都处于非活动状态。
objective-c - 是否可以专注于 NSPanel 而不会失去其他背景窗口的焦点?
我有一个自定义的 NSPanel:http ://cl.ly/K8SY
我将它设置为 NSPopUpMenuWindowLevel,即我希望它保持的级别。一个例子是聚光灯菜单,当您单击它时,后台窗口中的任何其他焦点仍然存在,但您仍然可以在搜索字段中键入。
我打开它:
但这并不关注窗口和背景。
有可能实现这一目标吗?如果是这样,怎么做?
cocoa - 防止 Escape 键关闭带有关闭框的 NSPanel
有谁知道防止转义键NSPanel
在键窗口时关闭的最佳方法?我的面板是一个子窗口,我希望它的行为更像是窗口的半永久性部分,更像是一个抽屉,对于其中的文本控件,我想让 Escape 键取消编辑。
我最近在 Cocoa 文档中发现了更多关于 windows 和 Escape 键的信息。在 NSResponder 类参考中,它说“窗口向第一响应者cancelOperation:
发送默认操作消息,然后消息从那里向上传播到响应者链”。cancelOperation:
对于 , 似乎有所不同NSPanel
,并且窗口在没有第一响应者cancelOperation:
接到呼叫或 NSTextView 代表接到他们的doCommandBySelector:
呼叫的情况下关闭。
考虑到我一直在做 OS X 工作,我对响应者链的进出的了解是可耻的。我在想我需要让keyDown:
我的NSPanel
子类表现得像一个普通的窗口。我尝试覆盖NSPanel
and can catch keyDown:
,将呼叫转发到NSWindow
'skeyDown:
而不是super
,但没有任何变化,Escape 仍然关闭了窗口,没有消息给第一响应者。尝试这样做是否合理?
然后我尝试完全重新实现我的面板子类' keyDown:
,让它这样做:
我认为这会让我的文本字段按照它通常期望的方式处理转义,也许如果没有文本字段是第一响应者,那么呼叫将结束。但是,我试过了,面板就像以前一样简单地关闭了。显然我没有在正确的水平上拦截事情。
有谁知道在低级按键事件和面板关闭之间运行的方法序列是什么,或者我需要覆盖什么来拦截它并确保cancelOperation:
我的第一响应者?
objective-c - Cocoa 中的自定义窗口样式
好的,这就是我想要做的:
- 我有一个自定义
NSPanel
子类 - 我希望它
NSPanel
是无边界的(没有标题 - 我自己在画一个标题栏)并且可以调整大小
事情是这样的:
- 一旦我设置
styleMask
为NSResizableWindowMask
,默认标题栏也会出现。 - 一旦我将其设置
styleMask
为NSBorderlessWindowMask
,默认标题栏就会消失(这很好),但窗口会失去调整大小的能力。
这是我的代码:
正如您从注释掉的代码中看到的那样,我尝试使用任何可能的位操作组合与掩码,以便组合我需要的东西。
有任何想法吗??
xcode - 切换 NSWindows
我有两个NSWindows
,都带有一个NSPanel
。我想在按下按钮时切换窗口。如何才能做到这一点?我不再需要旧窗口,所以我只想展示新窗口。