Как заставить курсор к концу NSTextField?

Я использую NSOpenPanel для выбора файла или папки с пользовательской машины. Но когда пользователь нажимает "открывать", курсор находится в начале пути, который появляется в текстовом поле. Это проблема, потому что, пока вы не нажмете на текстовое поле и стрелку вправо, вы не увидите, что весь путь указан. Например, если путь:

/Users/jeremysmith/code/testfolder/testfolder2

Он может показывать только:

/Users/jeremysmith/code/

поскольку курсор находится в начале и ширина текстового поля переходит только в "код".

Ответ 1

Я работал над текстовыми полями, делая:

[[self.inputFileTextField currentEditor] moveToEndOfLine:nil];

Ответ 2

В Swift, так как он 2015:

self.textField.moveToEndOfDocument(nil)

Ответ 3

Две идеи spring. Во-первых, вы можете использовать -[NSTextView setSelectedRange:]:

NSTextView * fieldEditor = [thePanel fieldEditor:NO forObject:theTextField];

NSUInteger text_len = [[fieldEditor string] length];

[fieldEditor setSelectedRange:(NSRange){text_len, 0}];

Или вы можете использовать один из методов действия NSResponder в текстовом поле, например moveDown:, moveToEndOfLine:, moveToEndOfParagraph:, & c. Также может работать фейкинг нажатием кнопки "Вниз" или "Стрелка вниз" с помощью [theTextField keyDown:...].

Ответ 4

Здесь мое быстрое решение:

self.fileTextField.currentEditor()?.moveToEndOfDocument(nil)