2011-08-18 40 views
11

我是NSOpenPanel從用戶的機器中選擇一個文件或文件夾。但是當用戶點擊「打開」時,光標位於文本字段中顯示的路徑的開始位置。這是一個問題,因爲直到您單擊文本框和箭頭右側,您將看不到整個路徑被列出。例如,如果路徑是:如何強制光標到NSTextField的末尾?

/Users/jeremysmith/code/testfolder/testfolder2 

它可能只顯示:

/Users/jeremysmith/code/ 

因爲光標是在開始和文本字段的寬度只到「代碼」。

回答

3

有兩個想法值得思考。首先,你可以使用-[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」按鍵也可能起作用。

20

我得到這個工作的文本框做:

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

如果文本字段最初不可編輯我必須發送 '[self.inputFileTextField selectText:self]'以使上述代碼正常工作。 –

+1

@RotsiserMho我有一個textfield thats不可編輯,我試過你的建議,但它仍然無法正常工作。你在調用moveToEndOfLine之前還是之後調用了selectText? – rocky

4

在斯威夫特,因爲它是2015年:

self.textField.moveToEndOfDocument(nil) 
+0

不知道如何這是可能的,但我得到一個無效的選擇器崩潰時,調用moveToEndOfDocument:在我的NSTextField子類,即使該方法是NSResponder的一個NSTextField的擴展... –

+0

@BenBaron你是積極的,你有你認爲你在運行時? –

+0

是的異常證實該對象是我的NSTextField的自定義子類,所以它應該已經工作。我最終在相同的文本字段上使用了simon.d的答案,並且它工作正常,所以它肯定是一個文本字段,因爲它能夠獲得字段編輯器。 –

2

這裏是我的雨燕的解決方案:

self.fileTextField.currentEditor()?.moveToEndOfDocument(nil) 
相關問題