Как установить первый респондент для NSTextView в Swift?
Изменить: в проекте MacOS
У меня есть простой ViewController, который я отображаю как всплывающее окно в приложении меню элемента состояния.
Я изменяю текст представления текста с помощью NSTableView, в зависимости от того, какой элемент нажат. Код, который я использую, похож на этот:
mainTextField.insertText(newStr, replacementRange: theRange)
(Я использую insertText для записи изменений в менеджере отмены)
Затем я выделяю текст:
// create the new NSRange
let range = NSRange(location: startRange, length: newStrLength)
// select the range in field
mainTextField.selectedRange = range
Все работает нормально, за исключением того, что текст выделен, но светло-серым вместо обычного небесно-голубого цвета, что указывает на то, что элемент управления не является первым респондентом. И когда я нажимаю на поле, выбор исчезает.
На самом деле я хотел бы, чтобы NSTextView стал первым респондентом, чтобы я мог напрямую скопировать выделенный текст.
Редактировать: если я нажимаю клавишу Tab на клавиатуре, я получаю textView, чтобы стать первым респондентом (и серый выбор становится стандартным небесно-голубым).
1 ответ
Исправленный ответ
В AppKit вам нужно:
if mainTextField.acceptsFirstResponder {
mainTextField.window?.makeFirstResponder(mainTextField)
}
В этом случае, вероятно, безопасно не проверять acceptsFirstResponder
, но это тоже не больно.
Оригинальный ответ (UIKit
)
Вам нужно позвонить mainTextField.becomeFirstResponder()
,