我试图在10.7+上模拟Mail.app和Finder.app的标记化搜索功能,其中看起来像是一个NSSearchField,左边是搜索放大镜图标,右边是cancel(x)按钮,但是还包括搜索字段内的标记.

有没有办法让NSSearchField使用NSTokenFieldCell而不是NSSearchFieldCell?我已经尝试调用-setCell:NSSearchField实例,该实例可以通过调用po [searchField cell]调试器来替换单元格,但是搜索字段的绘制中断并且没有绘制文本字段.
我是以正确的方式接近这个还是有更好的方法来做到这一点?谢谢!
2016年10月25日更新:使用辅助功能检查器我发现Finder和Mail使用混合私有子类:
SGTSearchField : NSSearchField
SGTSearchFieldCell : NSSearchFieldCellSGTTokenFieldCell : NSTokenFieldCell这些是名为的私有框架的一部分Suggestions.framework.希望Apple将来能够公开这些课程.如果您希望公开此功能,请确保提交雷达.
这个问题似乎很简单,但我已经尝试了我能想到的一切,并用Google搜索了几个小时.
我有一个自动完成的NSSearchField,基本上复制了Apple的SearchField示例代码.我在IB中关闭了"发送整个搜索字符串",因为我不想在用户完成文本输入之前进行搜索,并且不想进行多次搜索(它们很昂贵).
当用户在字段中键入时,当他们按Enter键,指定他们接受当前的自动完成时,我希望触发NSSearchField的操作.相反,它似乎只是填写自动完成,然后用户必须再次按下输入才能触发操作.基本上,考虑开始在Safari中输入URL,它会自动填充,然后按Enter键开始加载页面(触发操作).他们不需要再次按回车键开始加载页面.
我尝试过的事情没有成功:
有任何想法吗?谢谢!
是否有一个标准控件让开发人员能够获得像Mail(Mac OS X 10.7)中的搜索字段行为来使用令牌进行高级搜索?
在邮件中,令牌用于可视化搜索邮件,例如由名为"史蒂夫·乔布斯"的人发送的邮件.我尝试在另一个环境中完成同样的事情.
我一直在寻找几个小时,但仍然没有找到答案.如何NSSearchField显示带有结果的菜单?我可以使用最近的搜索菜单来显示结果,但如何以编程方式显示菜单?谢谢你的帮助.
我正在使用NSSearchField通过Internet运行查询并在表格视图中显示结果.在查询运行时,我想在NSSearchField中显示进度指示器?我想我以前在另一个应用程序中看到过这个.
是否有可用于实现此目的的开源组件?
我该怎么做呢?什么是最好的方法?有什么陷阱?
我正在寻找一种方法来创建一个行为如下的nssearchfield:
关键是,我的字符串匹配搜索文本字段中的任何子字符串和自动完成都不起作用,因为它会覆盖我输入的字符串.事实上,这应该是默认行为,还是我误解了搜索字段的目的?
进一步键入将进一步限制列表,但只有在自动填充下拉列表中选择项目后,该项目才会插入到文本字段中.
如果使用nssearchfield无法完成此操作,还有其他选择吗?
我很惊讶我找不到这个简单任务的答案.我只是希望用户键入文本,按回车键,让应用程序知道他/她键入的内容.我该怎么做?
我正在使用NSControlTextEditingDelegate自动完成在NSSearchField中键入的内容以及生成的自定义建议。
complete:更改文本后,消息将发送到字段编辑器。
现在,我想微调自动补全的行为,使其完全像Safari中的Google搜索文本字段一样起作用:
在NSTextField中键入两个或多个单词(用空格分隔)时,传入的NSRange的位置在control:textView:textView:completions:forPartialWordRange:
indexOfSelectedItem:键入最后一个空格之后开始。
这意味着,如果用户键入“ San Fran”并且Google API返回“ San Francisco”,则从自动完成列表中选择它,将NSTextField值替换为“ San San Francisco”。
可能的解决方法是重建包含完成的NSArray并仅返回实际建议的后缀,具体取决于charRange.location。这看起来很糟糕(因为自动完成列表现在仅显示完成字符串的一部分),因此我希望
NSTextField在请求自动完成时忽略空格。
从列表中选择自动完成功能,则不会发送默认的NSSearchField操作。目前,用户需要选择自动完成,然后按Enter触发搜索。
我有一个 Mac 应用程序,其工具栏中有一个搜索字段(实际上是一个NSTextField,但我NSSearchField也尝试过)。
我的问题是 Big Sur 上的文本字段背景只是纯白色,这使得它很难识别。
Big Sur 上 Safari 的位置栏具有更多对比度。我相信这是通过使用活力(如何更改 NSSearchField 的背景颜色(如 OS X 中的消息应用程序))以某种方式实现的,但我无法获得相同的效果。
我试过:
testTextField.appearance = NSAppearance(named: .vibrantLight)NSVisualEffectView,但显示在文本字段周围编辑:
我应该提到我使用roundedBezel边框样式。仅这一点似乎就会影响背景颜色(即背景始终为白色,无论设置哪种颜色)。
cocoa nstextfield nssearchfield nsvisualeffectview macos-big-sur
我已经实现了一个应用程序,我在其数据源和委托的帮助下使用NSTableview我没有使用NSArrayController,也不想使用它.我的问题是如何在这种情况下将NSSearchField与我的NSTableView绑定?我使用NSArrayController看到了很多答案.我不想将实现转换为NSArrayController,因为NSMutableArray的工作正常.
nssearchfield ×10
cocoa ×9
macos ×4
autocomplete ×3
nstextfield ×3
objective-c ×3
autosuggest ×1
controls ×1
enter ×1
nscell ×1
nstableview ×1
nstokenfield ×1
osx-lion ×1
return ×1
text ×1