问题标签 [nsapplication]

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 回答
707 浏览

objective-c - 从 C++ 循环启动 Cocoa GUI 并传递引用

我有一个问题......也许有几个:)

我的团队使用 Boost 和 CMake 用 C++ 编写了一个客户端来处理依赖于平台的东西。奇迹般有效!...有时:) 无论如何,Windows 的图形界面已经完成,但对于 Mac OS X 却没有。这也是我的任务。自然我使用的是 Cocoa,但问题是主循环在 C++ 代码中,而且 GUI 应该根据客户端更新一些动画。

这是怎么做到的?我对如何确定线程以及如何将引用从 C++ 代码传递到 GUI 代码感到非常困惑。现在,GUI 代码有自己的小 MVC,与项目的其余部分完全分离。我环顾四周,也许我太菜鸟了 :),但我对我真正可以使用的任何东西都不好...我并不真正了解这一切。

我已经厌倦了重新创建 NSApplication。我发现这个有用的教程: http ://cocoawithlove.com/2009/01/demystifying-nsapplication-by.html

我看了一点 Delegates:委托
如何在 Objective-C 中工作?

我看了一点 NSNotificationCenter:
How to create a class to send and receive events through NSNotificationCenter in Objective-C?


也许这里有人知道如何让我理解?要看什么?我应该去哪里看?

0 投票
1 回答
587 浏览

objective-c - 最小化mac中的所有窗口,但每次有一个窗口处于活动状态

我添加了一个代码来最小化 NSStatusItem 上所有正在运行的应用程序,它是一个非常简单的代码

但是当我运行这个应用程序时,一个应用程序总是在桌面上,用户当前正在与之交互。我也试过

甚至对于那些会很好地建议我使用苹果脚本的人,我也尝试过,但没有运气可能是我的脚本错误不知道

但同样的问题仍然存在,我无法指出为什么每次使用 NSStatusItem 时都会保留一个应用程序。请帮我解决这个问题。

0 投票
2 回答
2504 浏览

cocoa - 启动 Cocoa 应用程序而不显示主窗口

我有一个带有单个 NSWindow 的简单 Cocoa 应用程序,我可以在其中输入一些凭据,并在提交后应用程序启动另一个进程。如果凭据被输入一次并被缓存,我想通过运行应用程序而不显示应用程序的主窗口来启动该过程。我怎样才能做到这一点?

该应用程序只有一个符合 NSApplicationDelegate 的类和一个 .xib 文件。

0 投票
1 回答
1030 浏览

objective-c - 我不允许在我的 NSApplication 子类中覆盖 -sendEvent: 吗?

在我的 mac os x 应用程序中,我继承NSApplication并覆盖了它的-sendEvent:方法。苹果抱怨:

该应用程序包括来自框架“/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit”的“OBJC_IVAR_$_NSApplication._delegate”。

我能做些什么呢?我究竟做错了什么?

0 投票
1 回答
270 浏览

cocoa - 启动 systemStatusBar 在 applicationDidFinishLaunching 中不起作用

我的项目是基于文档的,加载状态菜单的代码只有在我将它放在 awakeFromNib 下时才会执行。

但是,在我的测试项目(非基于文档)中,代码在applicationDidFinishLaunching中执行得很好。为什么?我不想理想地将此功能用于我的状态菜单吗?

0 投票
1 回答
324 浏览

cocoa - 创建状态项 - 图标显示,菜单不显示

在一个基于文档的项目中,我正在尝试创建一个状态菜单。如您所见,我有一个构建状态栏的单例类,并且我从应用程序委托启动它。当我运行它时,我没有收到任何错误,但只有状态栏的图像,但没有下拉菜单。我在 IB 中创建了菜单。我在搞砸什么?

代表

。H

.m

0 投票
1 回答
1593 浏览

cocoa - Cocoa NSApplication 未激活但接收鼠标事件

我有一个奇怪的问题,我点击远离我的窗口。它放弃了主要和关键。然后我点击回到它,点击的视图不响应鼠标点击。但是第二次单击确实会导致视图响应。好像在第一次单击期间,窗口不是键,单击导致它成为键并能够处理第二次单击。

我进行了子类化NSApplication和拦截sendEvent:,以查看我的应用程序是否在第一次单击事件期间获取了事件,并且确实如此。此外,我转储了响应者链,发现我的视图确实在链中,但直到第二次单击,窗口才成为关键。我还注意到,当我收到第一个点击事件时,应用程序甚至都没有处于活动状态。这怎么可能?应用程序在收到鼠标事件时不应该激活吗?鸡蛋...

有什么想法/建议吗?

更新:通读文档后,我发现:

当用户在光标位于视图对象上时按下鼠标按钮时,会发送鼠标按下事件。如果包含视图的窗口不是关键窗口,则该窗口成为关键窗口并丢弃鼠标按下事件。但是,视图可以通过覆盖 NSView 的acceptsFirstMouse: 方法以返回YES 来规避这种默认行为。

所以这似乎是正在发生的事情。acceptsFirstMouse:但是,我尝试覆盖acceptsFirstResponder但无济于事。我的观点仍然不是“接受第一只鼠标”。

谢谢!

0 投票
1 回答
744 浏览

cocoa - NSApplicationPresentationOptions 不适用于 FIREBREATH

我正在尝试从我正在开发的插件中自定义用户体验,我的目标是使用 COCOA NSApplication 中可用的选项提供信息亭样式,代码如下所示:

我已经使用普通的可可应用程序测试了这段代码,它工作正常,但是当我将此代码嵌入到“Firebreath 插件”内的函数中时,尽管firebreath 构建正确并且我拥有的其他功能正常工作,但没有任何反应。

一些想法?这可能是关于系统安全限制?如果是这样如何启用它?如果其他可可功能正常,我不知道为什么这不起作用。

我正在使用 XCODE 4.2 在 Mac OS X Lion 上进行开发

0 投票
0 回答
240 浏览

xcode - 就地最小化 - 我需要自定义框架吗

我想创建一个系统范围的就地最小化功能,该功能在双击第 0 层中任何可见窗口的标题栏时发生。

看来这将是一个非常简单的重新实现功能......当双击标题栏时,只需绘制标题栏。而已。问题是在所有应用程序中都使用它。我认为它需要编写一个自定义框架来覆盖 AppKit 中的行为?也许是 NSApplication、NSWindow 或 NSView?

如何重新创建就地最小化? 框架是我唯一的选择吗?如果我创建一个框架,我可以替换 3rd 方应用程序中的最小化行为吗?

为了拦截和重新创建最小化按钮的默认行为,我需要覆盖哪个框架?

有关就地最小化的更多信息: 我熟悉 Unsanity 的 WindowShade,这正是我想要创建的。据说unsanity 正在开发一个Lion 版本,但他们的记录很糟糕。就地最小化是 OS 7 或 8 时代的系统功能。我尝试过其他实用程序来尝试替换此功能,但没有任何可以在核心系统级别进行就地最小化的工具就像它需要做的一样。请不要提供实用程序建议,我将建立自己的。

我已经构建了一个重新创建就地最小化的应用程序,但这还不够好。 我的应用程序通过将“占位符”窗口(属于我的应用程序)放置在第 3 方窗口最小化到停靠时的位置来半成功地重新创建就地最小化。当我的窗口(仅限标题栏)被双击时,我会关闭我的窗口并从 Dock 中恢复真实的窗口。

我的自定义应用程序运行良好,但有很多应用程序切换正在进行。我已经优化了应用程序之间的切换,使其几乎无缝,但事实仍然是每次双击窗口标题栏时都会进行应用程序切换。应用程序切换的结果是菜单栏来回切换,当我的应用程序获得焦点时,第 3 方应用程序的托盘会隐藏起来,并且列表还在继续。

所以,尽管我已经构建了一个概念应用程序,但这种方法并不能如我所愿。就地最小化需要使用构建应用程序以外的其他方法来实现,我需要帮助理解如何做到这一点。

就地最小化演示应用程序

我所知道的认为我需要做的。欢迎提出建议和帮助。 我想我需要编写一个替换 AppKit 的自定义框架?即使我只需要覆盖一小部分代码,这似乎势不可挡?即核心 _minimize 函数,不管它是什么。

双击第 3 方窗口的标题栏时,只需剪辑到标题栏,让系统的其余部分正常运行。在取消最小化(第二次双击)时,将剪辑设置回全窗口。

简单吧?

感谢您的任何帮助/建议,

克里斯

0 投票
0 回答
453 浏览

cocoa - applicationDidFinishLaunching 和 applicationShouldTerminate

我有一个 Cocoa 应用程序(OpenGL 调用和外部 IO 和串行线相当复杂......)。
不久前我做了一些修改,现在我applicationDidFinishLaunching的不再被调用了!到目前为止,我找不到方法(我的项目处于源代码控制之下,但我还找不到罪魁祸首!)。

但奇怪的是applicationShouldTerminateand applicationShouldTerminateAfterLastWindowClosed

我的问题是为什么在同一文件中的同一文件中不被applicationShouldTerminate调用时被调用。 applicationDidFinishLaunching.m@implementation