【发布时间】:2020-02-12 12:55:24
【问题描述】:
我有一个 NSTextField,我希望自动完成始终对字段的全部内容而不是当前单词进行操作。
我正在尝试通过在窗口委托中使用windowWillReturnFieldEditor() 来返回NSTextView 子类,我可以在其中返回rangeForUserCompletion 中的全文范围。
这基本上是有效的,除了一些绘图问题。没有绘制文本字段的焦点环,并且该字段的旧文本覆盖在当前输入的内容上。
我需要在NSTextView 上进行一些额外的配置以使其作为字段编辑器正常工作吗?我认为另一种方法是自定义构成单词边界的内容,但我还没有找到如何做到这一点。
相关代码:
extension MyWindowController: NSWindowDelegate
{
func windowWillReturnFieldEditor(_ sender: NSWindow, to client: Any?) -> Any?
{
if let clientField = client as? NSTextField,
clientField === myTextField {
let editor = FullReplacementTextView()
editor.isFieldEditor = true
return editor
}
else {
return nil
}
}
}
class FullReplacementTextView: NSTextView
{
override var rangeForUserCompletion: NSRange
{
return self.string.fullNSRange // Extension method that returns the full string range
}
}
【问题讨论】:
标签: macos cocoa nstextfield nstextview