一个支持键入字符串自动补全的搜索框。
正在寻找 RxSwift 兼容性? Reactive Extensions (RxSwift) 在 v0.21 版本后已迁移至 https://github.com/CleanCocoa/RxOmnibar。
旨在满足以下需求
例如,如果您键入“aard”,Omnibar 将在示例应用程序中建议术语“aardvark”
调用 display(content: OmnibarContent)
来更改 Omnibar 的内容并影响选择。您也可以使用 stringValue
属性来更改文本并将插入点放在末尾,就像常规的 NSTextField
一样。
public enum OmnibarContent {
/// Empties the Omnibar.
case empty
/// Display `text` inside the Omnibar and select it all (like ⌘A) for
/// quick overwriting.
case selection(text: String)
/// Display `text` inside the Omnibar and put the insertion point
/// at the end.
case prefix(text: String)
/// Display `text`, followed by `appendix`, putting the insertion point
/// before `appendix` and selecting it so it can be overwritten.
case suggestion(text: String, appendix: String)
}
设置 delegate
以接收更改通知。OmnibarDelegate
协议提供以下函数签名
omnibarSelectNext(_ omnibar: Omnibar)
和 omnibarSelectPrevious(_ omnibar: Omnibar)
用于更改选定的结果,而无需取消 Omnibar 的焦点。omnibar(_ omnibar: Omnibar, contentChange: OmnibarContentChange, method: ChangeMethod)
,通知代理关于最后的用户交互和键入更改。ChangeMethod
可以是 .deletion
(删除)、.insertion
(插入)或 .appending
(附加),以传达用户所做的操作,以便您可以对所有情况做出不同的反应。
OmnibarContentChange
要么是旧内容的 .replacement
(替换),要么是最后一次建议的 .continuation
(延续),如果存在任何建议;.continuation
就像一个自我建议的 OmnibarContent.suggestion
,等待批准。
enum OmnibarContentChange {
case replacement(text: String)
case continuation(text: String, remainingAppendix: String)
}
示例应用程序使用一个包含 12000 多个英语单词的列表来显示和过滤。
“英语开放词汇列表” (EOWL) 由 Ken Loge 开发,但几乎完全源自 J Ross Beresford 的 “UK Advanced Cryptics Dictionary” (UKACD) 1.6 版。
版权所有 (c) 2017 Christian Tietze。在 MIT 许可证下分发。
版权所有 © J Ross Beresford 1993-1999。保留所有权利。 对本出版物的使用有以下限制:如果在软件包中使用英国高级密码词典或以任何形式重新分发,则必须醒目地显示版权声明,并且必须逐字包含本文档的文本。