我是NSOpenPanel從用戶的機器中選擇一個文件或文件夾。但是當用戶點擊「打開」時,光標位於文本字段中顯示的路徑的開始位置。這是一個問題,因爲直到您單擊文本框和箭頭右側,您將看不到整個路徑被列出。例如,如果路徑是:如何強制光標到NSTextField的末尾?
/Users/jeremysmith/code/testfolder/testfolder2
它可能只顯示:
/Users/jeremysmith/code/
因爲光標是在開始和文本字段的寬度只到「代碼」。
我是NSOpenPanel從用戶的機器中選擇一個文件或文件夾。但是當用戶點擊「打開」時,光標位於文本字段中顯示的路徑的開始位置。這是一個問題,因爲直到您單擊文本框和箭頭右側,您將看不到整個路徑被列出。例如,如果路徑是:如何強制光標到NSTextField的末尾?
/Users/jeremysmith/code/testfolder/testfolder2
它可能只顯示:
/Users/jeremysmith/code/
因爲光標是在開始和文本字段的寬度只到「代碼」。
有兩個想法值得思考。首先,你可以使用-[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:
,&℃。僞造[theTextField keyDown:...]
的「Page Down」或「Down Arrow」按鍵也可能起作用。
我得到這個工作的文本框做:
[[self.inputFileTextField currentEditor] moveToEndOfLine:nil];
在斯威夫特,因爲它是2015年:
self.textField.moveToEndOfDocument(nil)
不知道如何這是可能的,但我得到一個無效的選擇器崩潰時,調用moveToEndOfDocument:在我的NSTextField子類,即使該方法是NSResponder的一個NSTextField的擴展... –
@BenBaron你是積極的,你有你認爲你在運行時? –
是的異常證實該對象是我的NSTextField的自定義子類,所以它應該已經工作。我最終在相同的文本字段上使用了simon.d的答案,並且它工作正常,所以它肯定是一個文本字段,因爲它能夠獲得字段編輯器。 –
這裏是我的雨燕的解決方案:
self.fileTextField.currentEditor()?.moveToEndOfDocument(nil)
如果文本字段最初不可編輯我必須發送 '[self.inputFileTextField selectText:self]'以使上述代碼正常工作。 –
@RotsiserMho我有一個textfield thats不可編輯,我試過你的建議,但它仍然無法正常工作。你在調用moveToEndOfLine之前還是之後調用了selectText? – rocky