Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何将光标强制到NSTextField的末尾?_Cocoa - Fatal编程技术网

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

Cocoa 如何将光标强制到NSTextField的末尾?,cocoa,Cocoa,我使用NSOpenPanel从用户的计算机中选择文件或文件夹。但当用户单击“打开”时,光标位于文本字段中显示的路径的开头。这是一个问题,因为在单击文本字段并向右箭头之前,您不会看到整个路径被列出。例如,如果路径为: /Users/jeremysmith/code/testfolder/testfolder2 它可能只显示: /Users/jeremysmith/code/ 由于光标位于开始处,文本字段的宽度仅限于“代码”。因此,我想到了两个想法。首先,您可以使用: 或者,您可以在文本字段上使

我使用NSOpenPanel从用户的计算机中选择文件或文件夹。但当用户单击“打开”时,光标位于文本字段中显示的路径的开头。这是一个问题,因为在单击文本字段并向右箭头之前,您不会看到整个路径被列出。例如,如果路径为:

/Users/jeremysmith/code/testfolder/testfolder2
它可能只显示:

/Users/jeremysmith/code/

由于光标位于开始处,文本字段的宽度仅限于“代码”。因此,我想到了两个想法。首先,您可以使用:


或者,您可以在文本字段上使用一种
NSResponder
操作方法,如,,&c。用
[theTextField keyDown:…]
假装“翻页”或“向下箭头”键也可能有效。

我通过以下操作在文本字段上实现了这一点:

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

在Swift中,自2015年起:

self.textField.moveToEndOfDocument(nil)

以下是我的快速解决方案:

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

如果文本字段最初不可编辑,我必须发送
[self.inputFileTextField selectText:self]
,以使上述代码正常工作。@RotsiserMho我有一个不可编辑的文本字段,我尝试了你的建议,但仍然无效。在调用moveToEndOfLine之前还是之后调用了selectText?不确定这是如何实现的,但在我的NSTextField子类上调用moveToEndOfDocument:时,我遇到了无效的选择器崩溃,即使该方法是NSResponder上的一个扩展,其中NSTextField是…@BenBaron您确定您在运行时拥有您认为拥有的吗?是的,异常确认该对象是我的NSTextField自定义子类,因此它应该可以工作。最后,我在同一个文本字段上使用了simon.d的答案,效果很好,因此它肯定是一个文本字段,因为它能够获得字段编辑器。谢谢@BenBaron。这很奇怪,但是对其中一些UIKit类进行子类化会产生奇怪的结果。我经常这样做,但是…
movetobeginingofdocument
movetobeginingofline
并没有在文本字段上实现(但它在文本视图上实现,这在字段编辑器中实现)
self.fileTextField.currentEditor()?.moveToEndOfDocument(nil)