nsmenu 相关问题

OS X API:定义管理应用程序菜单的对象的类

将 NSMenuItem 添加到 NSApp.MainMenu 不插入新菜单项

我使用以下代码以编程方式添加新的菜单项 覆盖 func viewDidLoad() { 让 mainMenu = NSApp.mainMenu 让 myMenu = NSMenuItem(标题: "MenuTitle", 操作:...

回答 2 投票 0

如何在不使用菜单的情况下获取 SwiftUI 中视图的菜单样式?

我有一个使用 NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) 的状态菜单。我正在移植一个具有许多视图和状态属性的 MenuBarExtra。我想避免使用

回答 1 投票 0

如何显示 macOS 应用程序特定的帮助菜单搜索栏?

我有一个用 Objective-C 编写的 macOS 应用程序。最初,我不想提供“帮助”菜单,因此我从故事板中删除了“帮助”顶级菜单项。 现在我想添加一个帮助工具,并且...

回答 1 投票 0

SwiftUI:更改 macOS 应用程序中的“关于视图”

我正在使用 SwiftUI 和新的应用程序生命周期构建 macOS 应用程序。 我很想更改“关于窗口”的内容(当您点击应用程序菜单中的“关于 DemoApp”时出现),但没有...

回答 4 投票 0

如何使用 objc2 将 Rust 函数作为选择器传递到 NSMenuItem.action 中?

我有下一个代码来在AppDelegate中构建应用程序菜单(AppDelegate代码取自官方示例): 实现 AppDelegate { fn new(mtm:MainThreadMarker,菜单:选项 我有下一个代码用于在AppDelegate中构建应用程序菜单(AppDelegate代码取自官方示例): impl AppDelegate { fn new(mtm: MainThreadMarker, menu: Option<Menu>) -> Id<Self> { let this = mtm.alloc(); let this = this.set_ivars(Ivars { mtm, menu, }); unsafe { msg_send_id![super(this), init] } } fn build_menu(&self, menu: &Menu, ns_menu: &Id<NSMenu>) { let ivars = self.ivars(); for item in menu.items.iter() { let ns_menu_item = NSMenuItem::new(ivars.mtm); let title = NSString::from_str(&item.name); unsafe { ns_menu_item.setTitle(&title) }; if let Some(on_click) = &item.on_click { unsafe { ns_menu_item.setAction(Some(on_click)) }; } if let Some(submenu) = &item.submenu { let ns_submenu = NSMenu::new(ivars.mtm); self.build_menu(submenu, &ns_submenu); ns_menu_item.setSubmenu(Some(&ns_submenu)); } ns_menu.addItem(&ns_menu_item); } } fn create_menu(&self, application: Id<NSApplication>) { let ivars = self.ivars(); if let Some(menu) = &ivars.menu { let main_menu = NSMenu::new(ivars.mtm); application.setMainMenu(Some(&main_menu)); self.build_menu(menu, &main_menu); } } } 问题出在这部分代码: if let Some(on_click) = &item.on_click { unsafe { ns_menu_item.setAction(Some(on_click)) }; } on_click: fn()是一个Rust函数,我不知道如何使用objc2将其作为Objective-C选择器传递。 在生成的 AppKit 中,该方法如下所示: #[method(setAction:)] pub unsafe fn setAction(&self, action: Option<Sel>); 我很确定有一种更简单的方法,但是...我已经使用自定义 NSMenuItem 类解决了我的问题: #[derive(Debug)] #[allow(unused)] struct MacMenuItemIvars { action: Option<fn()>, } declare_class!( struct MacMenuItem; unsafe impl ClassType for MacMenuItem { type Super = NSMenuItem; type Mutability = mutability::MainThreadOnly; const NAME: &'static str = "MenuItem"; } impl DeclaredClass for MacMenuItem { type Ivars = MacMenuItemIvars; } unsafe impl MacMenuItem { #[method(callback)] fn __callback(&self) { if let Some(action) = self.ivars().action { action(); } } } unsafe impl NSObjectProtocol for MacMenuItem {} ); impl MacMenuItem { fn new<S>(mtm: MainThreadMarker, title: S, action: Option<fn()>) -> Id<Self> where S: Into<String>, { let this = mtm.alloc(); let this = this.set_ivars(MacMenuItemIvars { action, }); let item: Id<MacMenuItem> = unsafe { msg_send_id![super(this), init] }; let title: String = title.into(); let title = NSString::from_str(&title); unsafe { item.setTitle(&title) }; if action.is_some() { unsafe { item.setTarget(Some(&item)) }; unsafe { item.setAction(Some(sel!(callback))) }; } item } } 必须有一种方法可以使用 Objective-C 块达到相同的结果。不过我没明白怎么办。

回答 1 投票 0

我可以删除自定义 NSMenu 的顶部和底部填充吗?

我想制作一个自定义弹出菜单,在深色背景上有浅色文本。我知道 NSMenuItem 的 setView: 方法,我可以用它来使每个项目在深色

回答 2 投票 0

使用 Swift 更改 NSMenuItem 标题

我想在登录过程成功完成后以及用户注销后更改菜单项的标题。 但如果我登录并检查菜单项的标题,它并没有改变...

回答 2 投票 0

如何在 Swift 中获取主 NSMenu?

我想在 Swift 中获取主 NSMenu 以执行以下代码 NSMenu(title: "ApplicationName").autoenablesItems = false。我不知道插入什么作为标题,因为似乎...

回答 1 投票 0

添加 subvmenu 时禁用 NSMenuItem 交互

我的 NSMenuItems 上有一个自定义 (SwiftUI) 视图。当我没有子视图时,按钮和水龙头工作正常。但是一旦我添加了一个子菜单,基本项目就会变得没有反应。 我试过设置...

回答 0 投票 0

如何隐藏具有自定义视图的菜单项?

我正在NSMenuItem中使用一个非常简单的自定义视图(仅包含一个只读NSTextField和一个NSSegmentedControl)(使用-setView:方法)。这部分工作正常。这是问题所在:...

回答 4 投票 4

强制NSMenu保持打开状态

我有一个macOS菜单栏应用程序,当用户单击菜单栏中的图标(NSStatusBarButton)时,该应用程序会显示NSMenu。我想实现一个功能,用户可以启用切换以强制使用NSMenu ...

回答 1 投票 -3

如何动态调整NSMenu的大小以适应其内容?

我有一个像这样的标准NSMenu这个菜单是用以下代码创建的:NSMenu * menu = [[NSMenu alloc] init]; NSMenuItem * addMenuItem = [[NSMenuItem alloc] init]; [addMenuItem setTitle:[NSString ...

回答 2 投票 3

如何设置NSMenu / NSMenuItems的字体?

我不知道如何在NSMenu中设置NSMenuItem的字体/样式。我在NSMenu上尝试了setFont方法,但似乎对菜单项没有任何影响。 NSMenuItem不是...

回答 4 投票 5

为什么我的NSMenuItem有动作时被禁用?

我正在实现一个自定义的NSToolbarItem,它具有一个按钮和一个下拉菜单,例如Mail。但是,唯一不起作用的是禁用了NSMenuItem。无论我做什么,我都做不到...

回答 1 投票 0

带有右对齐的详细信息文本标签的自定义NSMenuItem

我要实现的目标,我正在寻找一种在NSMenuItem中显示标题标签和详细文本标签的方法。最好看起来像这样:标题标签与...

回答 1 投票 0

“ Control Click”是否与macOS的“右键单击”相同?

我有一个NSTableView,其中的单元格是NSTextField。我将菜单分配给文本字段。当我右键单击单元格时,应该打开菜单。我的第二次点击等于点击...

回答 1 投票 0

为什么我的应用程序仅在菜单项位于AppDelegate中时才能看到菜单项的选择器?

我正在Swift中构建我的第一个macOs应用。我设法将菜单(NSMenu)添加到“菜单栏附加”图标,但是当菜单加载时,每个菜单项都显示为停用。我了解这是...

回答 1 投票 0

点击后删除NSMenuItem中的突出显示?

我已经为我的子类NSMenuItem(位于NSStatusMenu中)添加了一个自定义视图,这意味着默认情况下它不会被蓝色/灰色背景“突出显示”。我通过......实现了这一点

回答 4 投票 4

validateMenuItem或menuWillOpen未调用NSMenu

我的Mac应用程序有一个NSMenu,它的委托函数validateMenuItem和menuWillOpen从不被调用。到目前为止,网上的解决方案都没有帮助。看起来我做的一切都是正确的:......

回答 2 投票 2

从帮助菜单中删除(或自定义)“搜索”

我的应用程序具有默认的“帮助”菜单。我已删除“帮助”条目,并添加了一个支持条目,该条目链接到我网站上的论坛。帮助菜单笔尖看起来像这样:但是一旦我有了应用程序并且......

回答 4 投票 4

© www.soinside.com 2019 - 2024. All rights reserved.