到目前为止这是我的方法,但如果我在状态栏中点击我的应用程序没有任何反应……
- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification{ self.statusItem = [[Nsstatusbar systemStatusbar] statusItemWithLength:NSVariableStatusItemLength]; //[self.statusItem setVIEw:vIEw]; [self.statusItem setTitle:@"Test"]; [self.statusItem setHighlightmode:YES]; [self.statusItem setAction:@selector(activatePopover:)];}-(IBAction)activatePopover:(ID)sender{ BOol isEnabled = NO; if (isEnabled) { [self.popover showrelativeToRect:NSMakeRect(0,50,50) ofVIEw:statusItem.vIEw preferredEdge:NSMinYEdge]; } else { [self.popover close]; }}
任何想法如何运行?
谢谢
解决方法 如果不在状态项上使用自定义视图,则无法使用此功能.如果您没有设置自定义视图,则视图属性将为空(它仅返回自定义视图,而不是在您使用setTitle时NsstatusItem在内部使用的任何视图).不幸的是,根据Apple的文档,如果您想使用NSPopover,您需要提供自己的视图并自行处理点击.
我还没有看到一个包含正确处理的完整示例(状态项的默认实现相当多,您必须手动完成),并修复了popover wonkynesses:
>默认情况下,NSPopover不会成为关键窗口(某些控件不起作用),除非你覆盖NSPopover窗口的canBecomeKeyWindow
>正确解除其他状态项的菜单(可以使用空菜单调用popUpStatusItemmenu以正确聚焦状态项)
>使用drawStatusbarBackgroundInRect绘制突出显示的背景
>对左右鼠标点击做出反应
>使用NSRunningApplication.currentApplication.activateWithOptions确保状态项的所有窗口都变为活动状态(否则您的d出窗口将不会成为键盘输入的接收者)
>使用NSEvent.addGlobalMonitorForEventsMatchingMask解除NSPopover(内置的解雇机制popovers随附状态项不起作用)
>使用Nsstatusbar.systemStatusbar.removeStatusItem删除终止时的状态项
我希望很快就能有一篇关于这篇文章的博客文章(注意:我使用的是RubyMotion,而不是Objective-C),它解释了所有这些问题,并希望为创建menulet提供更简单的基础.如果我写这篇文章,我会更新这条评论.
总结以上是内存溢出为你收集整理的可可 – Popover NSStatusItem全部内容,希望文章能够帮你解决可可 – Popover NSStatusItem所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)