objective-c - 如何在菜单栏中获得类似聚光灯的文本输入效果?

标签 objective-c macos cocoa interface-builder spotlight

我想在我的 Mac 应用程序的菜单栏中有一个图标 - 并且该图标应在单击时生成一个菜单。虽然菜单中有更多条目,但我希望将顶行作为通用文本输入字段 - 就像在 Spotlight 中一样。

是否可以将这样的字段添加到NSMenu?或者我应该将其作为面板型窗口?

最佳答案

如果您使用的是 xcode 4 ,请在界面生成器中创建自定义 View 并添加文本字段或任何您想要的内容。在 IB 中,还可以从对象库中拖放一个“菜单”,其中包含任意数量的项目。然后,只需按住 Ctrl 键并单击要放入文本字​​段的菜单项(在您的情况下,它将是顶部的菜单项),然后拖动到自定义 View 并选择“ View ”。现在,当您打开菜单时,它不会在该空间中显示菜单项,而是显示自定义 View 中的任何内容。

编辑:至于你的评论,这是你应该做的。通过打开助理编辑器 View 并按住 Ctrl 键并从菜单中单击到要使用的头文件,使菜单成为一个导出。现在,只需创建一个每当菜单打开时就会运行的方法,苹果已经做了这个,它被称为 menuWillOpen。​​

- (void)menuWillOpen: nameOfYourMenu{

[self performSelector:@selector(methodExecutedWhenMenuIsClicked) withObject:nil afterDelay:0.0 inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];

0 处的延迟将使其立即发生,它必须在公共(public)模式运行循环中完成,以便菜单即使在打开时也会更新。现在只需创建 methodExecutedWhenMenuIsClicked 并设置它以便文本字段响应。

- (void)methodExecutedWhenMenuIsClicked{

[[yourTextfiled window] makeFirstResponder:yourTextField];

关于objective-c - 如何在菜单栏中获得类似聚光灯的文本输入效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716807/

相关文章:

objective-c - Objective-C 运行时调用的方法

objective-c - 带有 UITextAlignmentLeft 的 iOS UIButton 仍然居中文本?

macos - 我想制作一个类似于XCODE可折叠 Accordion 风格的检查器分组机制的GUI

objective-c - 子类 NSView 未出现在自定义 View 中

macos - 如何从内存中启动可执行文件?

objective-c - 使用 C 宏创建映射到 Objective-C 消息调用的 C 风格代码?

ios - 使用 ECSlidingViewController 在两个 NavigationController 之间进行转换

macos - 如何在按下按钮而不是在 os x 中单击鼠标右键时显示​​菜单

macos - Vagrant 无法在 Chrome 上使用本地主机扩展

iphone - 当方法不是 POST 时,NSURLRequest 无法处理 HTTP 正文?