У меня есть пользовательский NSControl
, и я пытаюсь заставить работать функцию edit(withFrame:editor:delegate:event:)
.После вызова я ожидаю, что редактор полей появится в моем представлении, но ничего не происходит.
Я прочитал документацию для этой функции и создал минимальный пример:
class MyView: NSControl, NSControlTextEditingDelegate, NSTextDelegate {
required init?(coder: NSCoder) {
super.init(coder: coder)
isEnabled = true
}
override func mouseDown(with event: NSEvent) {
let editor = window!.fieldEditor(true, for: nil)!
let rect = bounds.insetBy(dx: 10.0, dy: 10.0)
self.edit(withFrame: rect, editor: editor, delegate: self, event: event)
}
func control(_ control: NSControl, textShouldBeginEditing fieldEditor: NSText) -> Bool {
return true
}
func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
self.endEditing(fieldEditor)
return true
}
func textShouldBeginEditing(_ textObject: NSText) -> Bool {
return true
}
}
Как видно из примера, я не совсем уверен, соответствует ли NSControlTextEditingDelegate
или NSTextDelegate
.Кажется, что ни одна из функций, которые я реализую, не вызывается.
Или, возможно, я неправильно понимаю назначение функции?Должен ли я переопределить это вместо того, чтобы называть это?