标签: nsstatusitem

对话框中的Cocoa键盘快捷键没有编辑菜单

我有一个LSUIElement显示菜单栏状态项的应用程序.应用程序可以显示包含文本字段的对话窗口.

如果用户右键单击/按住Control键并单击文本字段,则会出现一个菜单,允许剪切,复制,粘贴等.但是,标准的Command-X,Command-C和Command-V键盘快捷方式在领域.我假设这是因为我的应用程序没有提供定义了这些快捷方式的"编辑"菜单.

我已尝试将"编辑"菜单项添加到我的应用程序菜单中,如Ship Some Code博客中所述,但这不起作用.可以使用"编辑"菜单中的菜单项,但键盘快捷键仍然无法使用.

我可以想象一些破解键盘处理的方法,但是有一种"推荐"的方法可以让它工作吗?

(有关该应用程序的详细信息,请参阅菜单栏倒计时.)

相关问题:复制/粘贴在模态窗口中不起作用

macos cocoa nsstatusitem

35
推荐指数
7
解决办法
1万
查看次数

NSStatusItem更改暗色调的图像

在OSX 10.10 beta 3中,Apple发布了他们的暗色调选项.不幸的是,这也意味着几乎所有的状态栏图标(除了我见过的Apple和Path Finder),包括我的,都在黑暗的背景下保持黑暗.如何在应用深色调时提供替代图像?

我没有看到API更改NSStatusBarNSStatusItem显示我的更改,我假设它是一个通知或一些反应,以便在用户改变色调时轻松进行更改.

绘制图像的当前代码包含在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)

macos objective-c nsstatusitem nsstatusbar osx-yosemite

23
推荐指数
2
解决办法
1万
查看次数

NSStatusItem可以缩小以适应吗?

我有一个可变长度NSStatusItem,我希望尽可能保持可见,即使这意味着只显示一些内容,但当我的项目足够大以进入应用程序的菜单栏时,它完全隐藏.有没有办法告诉何时发生这种情况,以便我可以缩小视图以适应可用空间?

我已经尝试了自定义视图,覆盖了所有viewWill*方法,框架设置器和显示方法,并定期检查包含窗口是否已移动或隐藏.当我的物品太长时,我找不到任何方法来判断.

macos cocoa nsstatusitem

18
推荐指数
1
解决办法
527
查看次数

使用NSStatusItem拖放

我正在尝试编写一个应用程序,允许用户从Finder中拖动文件并将其拖放到NSStatusItem.到目前为止,我已经创建了一个实现拖放界面的自定义视图.当我将这个视图添加为它的子视图时NSWindow,一切正常 - 鼠标光标给出了适当的反馈,当删除时我的代码被执行.

但是,当我使用相同的视图作为NSStatusItem's视图时,它的行为不正确.鼠标光标提供适当的反馈,表明文件可以被删除,但是当我删除文件时,我的丢弃代码永远不会被执行.

我需要做些什么特别的事情来实现拖放NSStatusItem吗?

cocoa drag-and-drop nsstatusitem

15
推荐指数
2
解决办法
4387
查看次数

如何获取NSStatusItem的屏幕位置

我有一个关于NSStatusItemmac osx中for cocoa 的问题.如果你看一下名为snippets的mac app(请参阅http://snippetsapp.com/上的电影).您将看到,一旦您单击状态栏图标,图标下方就会出现完美对齐的视图/面板或甚至是窗口.

我的问题是......如何计算你的位置NSWindow就像这个应用程序一样?

我尝试过以下方法:

  1. 子类 NSMenu
  2. 为菜单的第一项设置视图显示(工作但足够)
  3. 使用addSubview而不是图标来实现NSStatusItem这个效果,但是不能高于20px

macos cocoa objective-c nsstatusitem

13
推荐指数
3
解决办法
4838
查看次数

NSStatusBarButton保持突出显示

从OS X 10.10开始,大部分NSStatusItem都被弃用,而不是该button属性,该属性由NSStatusBarButton组成.它应该像普通按钮一样工作,但遗憾的是NSStatusButton中的cellsetCell方法也已被弃用.由于这个原因,我很难找到一种方法来保持按钮在点击后突出显示(通常按钮在鼠标按下时突出显示,在鼠标向上突出显示.我希望在鼠标按下后保持按钮突出显示).

调用[NSStatusButton setHighlighted:]它的动作不起作用,因为一旦鼠标启动它似乎不会自动亮起.另一方面,使用延迟在下一个循环中调用它,即使[self performSelector: withDelay:]突出显示以相当难看的方式闪烁.它有效,但看起来不太好.

设置按钮类型以NSToggleButton完全删除突出显示,而是突出显示奇怪的模板图像.

这是我能想到的唯一方法.反正有没有覆盖这个NSButtonCell mouseUp行为?

macos cocoa objective-c nsstatusitem osx-yosemite

12
推荐指数
3
解决办法
2612
查看次数

左对右点击状态栏项目Mac Swift 2

我一直在尝试开发一个位于Mac状态栏中的简单程序.我需要它,这样如果你左键单击,它会运行一个函数,但是如果你右键单击它会显示一个带有About和Quit项目的菜单.

我一直在寻找,但我能找到的只是命令或控制点击建议,但我宁愿不去这条路线.

在此先感谢,任何帮助表示赞赏!

macos menu nsstatusitem swift2

12
推荐指数
2
解决办法
2472
查看次数

Cocoa:右键单击NSStatusItem

我是一名.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)然后运行相应的代码或使菜单知道左右两侧点击.但是当我试图这样做时,这些都没有奏效.

提前致谢.

cocoa right-click nsstatusitem

9
推荐指数
1
解决办法
7396
查看次数

如何获取NSStatusItem的框架

NSStatusItem在我将它添加到Cocoa的状态栏后,是否有可能得到一个框架?当我的应用程序启动时,我将一个项目添加到系统状态栏,并想知道它的位置,是可能的.

cocoa nsstatusitem nsstatusbar

9
推荐指数
3
解决办法
3360
查看次数

Swift:10.10中的NSStatusItem菜单行为(例如,只在鼠标右键单击时显示)

我正在Swift中编写一个简单的状态栏应用程序,并尝试使用OS X 10.10中引入的新NSStatusItem API.

我瞄准的界面是在statusItem上单击鼠标左键以打开和关闭核心功能,用鼠标右键单击(或按住Control键单击)选项以显示设置菜单.我不需要自定义视图或弹出窗口来实现此功能.

默认情况下,如果NSMenu被分配给NSStatusItem,它将在左右键单击上显示菜单.我想将行为更改为仅在右键单击时显示菜单,或者作为解决方法,防止左键单击时弹出菜单

以前,似乎要在NSStatusItem上控制鼠标事件,必须使用重写的鼠标事件设置自定义视图(请参阅此相关问题).

在10.10中引入的新NSStatusItem API中,不推荐使用设置自定义视图的方法,并且看起来不鼓励这种行为.根据@Taylor的回答,应该通过statusItemObject.button()返回的NSStatusBarButton对象使用一些不赞成的行为,但是在编写时没有NSStatusBarButton的文档,并且返回的对象是只读的,不能被替换使用带有重写鼠标事件处理程序的自定义按钮.

有没有办法对鼠标事件显示附加到NSStatusItem(或NSStatusBarButton)的NSMenu进行某种程度的控制?

right-click nsmenu nsstatusitem swift osx-yosemite

9
推荐指数
1
解决办法
1834
查看次数