NSSearchField - Как выделить весь текст? (Swift/Раскадровки на macOS)

Кажется, все в Интернете в основном касается элементов управления iOS/UI, а не элементов управления macOS/Cocoa NS. Во всяком случае, как заставить NSSearchField выбирать весь текст в поле программно? Я пробовал несколько методов, адаптированных из реализаций iOS UISearchBar, но ни один из них не скомпилировался и не работал. Я просто хочу, например, нажать кнопку и выделить текст, который находится внутри текстового поля NSSearchField. Кажется, я не могу найти в нем метод, который позволяет этому произойти.

Спасибо за вашу помощь / внимание!


person Dart Fox    schedule 06.08.2020    source источник
comment
NSSearchField наследуется от NSTextField. Вы можете проверить этот пост, как выделить весь текст в текстовом поле stackoverflow.com/questions/26126273/   -  person AmirZ    schedule 06.08.2020
comment
@AmirZ Я не могу работать с NSSearchField, как с TextField. Не могли бы вы привести пример указания SearchField выбрать весь текст? Я пробовал варианты примеров по вашей ссылке и не смог получить правильный результат.   -  person Dart Fox    schedule 06.08.2020
comment
Вы пытались запустить код по данной ссылке в чистой среде или на игровой площадке? особенно функция selectText(_:), которая фактически выполняет выбор и заканчивает редактирование, как описано в документах: developer.apple.com/documentation/appkit/nstextfield/   -  person AmirZ    schedule 06.08.2020
comment
PS ответ, который вы ищете, - это тот, который помечен как правильный ответ, и вы можете просто заменить NSTextField на NSSearchField, результат будет таким же.   -  person AmirZ    schedule 06.08.2020
comment
Поле поиска сфокусировано?   -  person Willeke    schedule 06.08.2020


Ответы (1)


Все редактирование в NSTextField обрабатывается NSText (который наследует от NSTextView). Итак, чтобы выбрать текст в поле поиска, вам нужно установить выбранный диапазон в текущем редакторе поля. В этом примере выделяется весь текст.

Цель-C:

NSRange range = NSMakeRange(0, searchField.stringValue.length);
NSText *editor = [searchField currentEditor];
[editor setSelectedRange:range];

Быстрый

let range = NSRange(location: 0, length: searchField.stringValue.length)
let editor = searchField.currentEditor()
editor?.selectedRange = range
person Tritonal    schedule 13.08.2020