我有一个LSUIElement显示菜单栏状态项的应用程序.应用程序可以显示包含文本字段的对话窗口.
如果用户右键单击/按住Control键并单击文本字段,则会出现一个菜单,允许剪切,复制,粘贴等.但是,标准的Command-X,Command-C和Command-V键盘快捷方式在领域.我假设这是因为我的应用程序没有提供定义了这些快捷方式的"编辑"菜单.
我已尝试将"编辑"菜单项添加到我的应用程序菜单中,如Ship Some Code博客中所述,但这不起作用.可以使用"编辑"菜单中的菜单项,但键盘快捷键仍然无法使用.
我可以想象一些破解键盘处理的方法,但是有一种"推荐"的方法可以让它工作吗?
(有关该应用程序的详细信息,请参阅菜单栏倒计时.)
相关问题:复制/粘贴在模态窗口中不起作用
在OSX 10.10 beta 3中,Apple发布了他们的暗色调选项.不幸的是,这也意味着几乎所有的状态栏图标(除了我见过的Apple和Path Finder),包括我的,都在黑暗的背景下保持黑暗.如何在应用深色调时提供替代图像?
我没有看到API更改NSStatusBar或NSStatusItem显示我的更改,我假设它是一个通知或一些反应,以便在用户改变色调时轻松进行更改.
绘制图像的当前代码包含在NSView:
- (void)drawRect:(NSRect)dirtyRect
{
// set view background color
if (self.isActive) {
[[NSColor selectedMenuItemColor] setFill];
} else {
[[NSColor clearColor] setFill];
}
NSRectFill(dirtyRect);
// set image
NSImage *image = (self.isActive ? self.alternateImage : self.image);
_imageView.image = image;
}
Run Code Online (Sandbox Code Playgroud) 我有一个可变长度NSStatusItem,我希望尽可能保持可见,即使这意味着只显示一些内容,但当我的项目足够大以进入应用程序的菜单栏时,它完全隐藏.有没有办法告诉何时发生这种情况,以便我可以缩小视图以适应可用空间?
我已经尝试了自定义视图,覆盖了所有viewWill*方法,框架设置器和显示方法,并定期检查包含窗口是否已移动或隐藏.当我的物品太长时,我找不到任何方法来判断.
我正在尝试编写一个应用程序,允许用户从Finder中拖动文件并将其拖放到NSStatusItem.到目前为止,我已经创建了一个实现拖放界面的自定义视图.当我将这个视图添加为它的子视图时NSWindow,一切正常 - 鼠标光标给出了适当的反馈,当删除时我的代码被执行.
但是,当我使用相同的视图作为NSStatusItem's视图时,它的行为不正确.鼠标光标提供适当的反馈,表明文件可以被删除,但是当我删除文件时,我的丢弃代码永远不会被执行.
我需要做些什么特别的事情来实现拖放NSStatusItem吗?
我有一个关于NSStatusItemmac osx中for cocoa 的问题.如果你看一下名为snippets的mac app(请参阅http://snippetsapp.com/上的电影).您将看到,一旦您单击状态栏图标,图标下方就会出现完美对齐的视图/面板或甚至是窗口.
我的问题是......如何计算你的位置NSWindow就像这个应用程序一样?
我尝试过以下方法:
NSMenuNSStatusItem这个效果,但是不能高于20px从OS X 10.10开始,大部分NSStatusItem都被弃用,而不是该button属性,该属性由NSStatusBarButton组成.它应该像普通按钮一样工作,但遗憾的是NSStatusButton中的cell和setCell方法也已被弃用.由于这个原因,我很难找到一种方法来保持按钮在点击后突出显示(通常按钮在鼠标按下时突出显示,在鼠标向上突出显示.我希望在鼠标按下后保持按钮突出显示).
调用[NSStatusButton setHighlighted:]它的动作不起作用,因为一旦鼠标启动它似乎不会自动亮起.另一方面,使用延迟在下一个循环中调用它,即使[self performSelector: withDelay:]突出显示以相当难看的方式闪烁.它有效,但看起来不太好.
设置按钮类型以NSToggleButton完全删除突出显示,而是突出显示奇怪的模板图像.
这是我能想到的唯一方法.反正有没有覆盖这个NSButtonCell mouseUp行为?
我一直在尝试开发一个位于Mac状态栏中的简单程序.我需要它,这样如果你左键单击,它会运行一个函数,但是如果你右键单击它会显示一个带有About和Quit项目的菜单.
我一直在寻找,但我能找到的只是命令或控制点击建议,但我宁愿不去这条路线.
在此先感谢,任何帮助表示赞赏!
我是一名.Net开发人员,他需要将一个小项目移植到Mac中,所以我对Objective C几乎一无所知.事实上,下面的代码只是抓住了一堆稻草,在黑暗中拍摄.
尝试构建一个状态菜单程序,打开一个或另一个窗口,具体取决于它是左键单击还是右键单击/按住Ctrl键单击.这是我所拥有的,它仅适用于左键单击(显然):
-(void) awakeFromNib{
NSBundle *bundle = [NSbundle mainBundle];
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
[statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"icon" ofType:@"png"]];
[statusItem setImage:statusImage];
[statusItem setToolTip:@"Program Name"];
[statusItem setHighlightMode:YES];
[statusItem setAction:@selector(openWin:)];
[statusItem setTarget: self];
}
-(void)openWin:(id)sender{
[self openLeftWindow:sender];
}
-(IBAction)openLeftWindow:(id)sender{
//Code to populate Left Click Window
[leftWindow makeKeyAndorderFront:nil];
}
-(IBAction)openRightWindow:(id)sender{
//Code to populate Right Click Window
[rightWindow makeKeyAndorderFront:nil];
}
Run Code Online (Sandbox Code Playgroud)
在我看来,解决方案将是openWin()函数中的if语句,以确定单击哪个按钮(或者如果按住ctrl)然后运行相应的代码或使菜单知道左右两侧点击.但是当我试图这样做时,这些都没有奏效.
提前致谢.
NSStatusItem在我将它添加到Cocoa的状态栏后,是否有可能得到一个框架?当我的应用程序启动时,我将一个项目添加到系统状态栏,并想知道它的位置,是可能的.
我正在Swift中编写一个简单的状态栏应用程序,并尝试使用OS X 10.10中引入的新NSStatusItem API.
我瞄准的界面是在statusItem上单击鼠标左键以打开和关闭核心功能,用鼠标右键单击(或按住Control键单击)选项以显示设置菜单.我不需要自定义视图或弹出窗口来实现此功能.
默认情况下,如果NSMenu被分配给NSStatusItem,它将在左右键单击上显示菜单.我想将行为更改为仅在右键单击时显示菜单,或者作为解决方法,防止左键单击时弹出菜单
以前,似乎要在NSStatusItem上控制鼠标事件,必须使用重写的鼠标事件设置自定义视图(请参阅此相关问题).
在10.10中引入的新NSStatusItem API中,不推荐使用设置自定义视图的方法,并且看起来不鼓励这种行为.根据@Taylor的回答,应该通过statusItemObject.button()返回的NSStatusBarButton对象使用一些不赞成的行为,但是在编写时没有NSStatusBarButton的文档,并且返回的对象是只读的,不能被替换使用带有重写鼠标事件处理程序的自定义按钮.
有没有办法对鼠标事件显示附加到NSStatusItem(或NSStatusBarButton)的NSMenu进行某种程度的控制?
nsstatusitem ×10
cocoa ×7
macos ×6
objective-c ×3
osx-yosemite ×3
nsstatusbar ×2
right-click ×2
menu ×1
nsmenu ×1
swift ×1
swift2 ×1