Swift & NSTextField:如何使用文本完成
Swift & NSTextField: How to work with Text Completion
我想为 NSTextField
创建这样的自动完成列表:
我发现了这个:
https://developer.apple.com/documentation/appkit/nscontroltexteditingdelegate/1428925-control
optional func control(_ control: NSControl,
textView: NSTextView,
completions words: [String],
forPartialWordRange charRange: NSRange,
indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String]
有人可以解释一下如何在任何示例中使用它吗?
实在看不懂。
我试图实现这个,但没有任何效果。您可以在下面找到我的代码。
提前致谢
我的代码:
class ViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var InputField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
InputField.delegate = self
}
func control(_ control: NSControl, textView: NSTextField, completions words: [String], forPartialWordRange charRange: NSRange, indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String] {
let words = ["Hello", "Brother"]
return words
}
@IBAction func CompleteButton(_ sender: NSButton) {
print("pressed")
InputField.complete(nil)
}
}
但是如果我尝试按下按钮,我会在我的控制台中收到此错误:
pressed
[NSTextField complete:]: unrecognized selector sent to instance 0x10066ae00
[General] -[NSTextField complete:]: unrecognized selector sent to instance 0x10066ae00
该方法只允许您控制建议。 (例如:订单、过滤器等。)
所以,如果您不想自定义您的建议,您只需要 return 字词:
optional func control(_ control: NSControl,
textView: NSTextView,
completions words: [String],
forPartialWordRange charRange: NSRange,
indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String] {
return words
}
NSTextField
没有实现 complete:
,NSTextView
实现了。 NSTextField
使用字段编辑器 NSTextView
来编辑其内容,请参阅 Text Fields, Text Views, and the Field Editor。使用 currentEditor()
从文本字段中获取字段编辑器。
@IBAction func completeButton(_ sender: NSButton) {
inputField.currentEditor()?.complete(nil)
}
我想为 NSTextField
创建这样的自动完成列表:
我发现了这个: https://developer.apple.com/documentation/appkit/nscontroltexteditingdelegate/1428925-control
optional func control(_ control: NSControl,
textView: NSTextView,
completions words: [String],
forPartialWordRange charRange: NSRange,
indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String]
有人可以解释一下如何在任何示例中使用它吗? 实在看不懂。
我试图实现这个,但没有任何效果。您可以在下面找到我的代码。
提前致谢
我的代码:
class ViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var InputField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
InputField.delegate = self
}
func control(_ control: NSControl, textView: NSTextField, completions words: [String], forPartialWordRange charRange: NSRange, indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String] {
let words = ["Hello", "Brother"]
return words
}
@IBAction func CompleteButton(_ sender: NSButton) {
print("pressed")
InputField.complete(nil)
} }
但是如果我尝试按下按钮,我会在我的控制台中收到此错误:
pressed
[NSTextField complete:]: unrecognized selector sent to instance 0x10066ae00
[General] -[NSTextField complete:]: unrecognized selector sent to instance 0x10066ae00
该方法只允许您控制建议。 (例如:订单、过滤器等。)
所以,如果您不想自定义您的建议,您只需要 return 字词:
optional func control(_ control: NSControl,
textView: NSTextView,
completions words: [String],
forPartialWordRange charRange: NSRange,
indexOfSelectedItem index: UnsafeMutablePointer<Int>) -> [String] {
return words
}
NSTextField
没有实现 complete:
,NSTextView
实现了。 NSTextField
使用字段编辑器 NSTextView
来编辑其内容,请参阅 Text Fields, Text Views, and the Field Editor。使用 currentEditor()
从文本字段中获取字段编辑器。
@IBAction func completeButton(_ sender: NSButton) {
inputField.currentEditor()?.complete(nil)
}