如何强制光标到NSTextField的末尾?

Jer*_*ith 13 cocoa

我是NSOpenPanel从用户的机器中选择文件或文件夹.但是当用户单击"打开"时,光标位于文本字段中显示的路径的开头.这是一个问题,因为在您右键单击文本字段和箭头之前,您将看不到列出整个路径.例如,如果路径是:

/Users/jeremysmith/code/testfolder/testfolder2
Run Code Online (Sandbox Code Playgroud)

它可能只显示:

/Users/jeremysmith/code/
Run Code Online (Sandbox Code Playgroud)

由于光标位于开头,文本字段的宽度仅为"代码".

sim*_*n.d 23

我通过以下方式在textfields上工作:

[[self.inputFileTextField currentEditor] moveToEndOfLine:nil];
Run Code Online (Sandbox Code Playgroud)


Dan*_*ark 6

在Swift,从2015年开始:

self.textField.moveToEndOfDocument(nil)
Run Code Online (Sandbox Code Playgroud)

  • 不知道怎么可能,但是在我的NSTextField子类上调用moveToEndOfDocument:时,我得到了一个无效的选择器崩溃,尽管该方法是NSResponder的扩展,而NSTextField是... (2认同)

Bil*_*rus 6

这是我的斯威夫特解决方案:

self.fileTextField.currentEditor()?.moveToEndOfDocument(nil)
Run Code Online (Sandbox Code Playgroud)


Jos*_*ell 2

我的脑海中浮现出两个想法。首先,您可以使用-[NSTextView setSelectedRange:]

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

NSUInteger text_len = [[fieldEditor string] length];

[fieldEditor setSelectedRange:(NSRange){text_len, 0}];
Run Code Online (Sandbox Code Playgroud)

NSResponder或者您可以在文本字段上使用其中一种操作方法,例如moveDown:moveToEndOfLine:moveToEndOfParagraph:、 &c。伪造“Page Down”或“Down Arrow”按键[theTextField keyDown:...]也可能有效。