回到2010年,皮埃尔问了这个问题(他接受的答案对我不起作用).
我遇到了同样的问题:我能够以编程方式从我的Cocoa应用程序中成功地移动鼠标(并关闭!?!),但是将鼠标移到我的Dock的位置并没有显示它(和一些其他应用程序没有注册鼠标移动事件,例如删除鼠标的游戏)
我使用的方法是:
void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point)
{
CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
CGEventSetType(theEvent, type);
CGEventPost(kCGSessionEventTap, theEvent);
CFRelease(theEvent);
}
Run Code Online (Sandbox Code Playgroud)
然后,当我想移动鼠标时,我运行:
PostMouseEvent(0, kCGEventMouseMoved, mouseLocation);
Run Code Online (Sandbox Code Playgroud)
请注意,此代码会为链接等事件生成鼠标悬停事件.
现在是2013年,是否有可能解决这个问题?
谢谢你的时间!
我在 Mac AppStore 上有一个应用程序,许多用户最近写信说它无法在 High Sierra 上运行(可能是 10.13.6,很难从中提取具体信息)。我设法在朋友的设备上重现了该问题,但是我无法使用该设备通过 Xcode 等进行构建。
问题似乎是NSViewController根本不加载它的子视图!下面显示的灰色视图控制器中应该有下拉菜单和按钮。

我还注意到,关闭灰色窗口不会关闭红色透明窗口 - 在 Mojave 上,执行此操作的代码按预期运行。状态栏中的自定义快捷方式/菜单项似乎也没有运行其绑定的代码。请注意,红色窗口是通过灰色窗口中的代码显示的,因此某些代码正在设法运行。
这个模糊的线索似乎提到了同样的问题,就像这个问题一样。然而,他们都没有要求程序化的解决方案。
有谁知道如何解决这个问题,或者我是否需要告诉我的用户更新他们的操作系统?
编辑:设法在 High Sierra 上编译,但视图仍然没有出现(视图调试器中也没有任何迹象)。控制台说:
2019-02-02 16:53:41.602178+1100 Translate This[20410:36446120] -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:53:41.602366+1100 Translate This[20410:36446120] Failed to set (contentViewController) user defined inspected property on (NSWindow): -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:54:57.678247+1100 Translate This[20410:36446120] -[NSStoryboard _bundle]: unrecognized selector sent to instance 0x600000000660
2019-02-02 16:54:57.728849+1100 …Run Code Online (Sandbox Code Playgroud)