2011-08-18 13 views
11

Soy NSOpenPanel para seleccionar un archivo o carpeta de la máquina de un usuario. Pero cuando el usuario hace clic en "abrir", el cursor está al principio de la ruta que aparece en el campo de texto. Esto es un problema porque hasta que haga clic en el campo de texto y la flecha a la derecha, no verá que la ruta completa está en la lista. Por ejemplo, si la ruta es:¿Cómo fuerzo el cursor al final de un NSTextField?

/Users/jeremysmith/code/testfolder/testfolder2 

Sólo se pueden mostrar:

/Users/jeremysmith/code/ 

ya que el cursor se encuentra en el comienzo y el ancho del campo de texto sólo sirve para "código".

Respuesta

3

Dos ideas vienen a la mente. En primer lugar, se puede usar -[NSTextView setSelectedRange:]:

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

NSUInteger text_len = [[fieldEditor string] length]; 

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

O usted podría utilizar uno de los métodos NSResponder de acción en el campo de texto, como moveDown:, moveToEndOfLine:, moveToEndOfParagraph:, & c. Fingir una pulsación de tecla "Av Pág" o "Flecha Abajo" con [theTextField keyDown:...] también podría funcionar.

20

Tengo esta trabajando en campos de texto haciendo:

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

Si el campo de texto es inicialmente no editable Tuve que enviar '[self.inputFileTextField selectText: self]' para hacer que el código anterior funcione. –

+1

@RotsiserMho Tengo un campo de texto que no es editable e intenté su sugerencia, pero aún así no funcionará. ¿Llamaste a SelectText antes o después de llamar a moveToEndOfLine? – rocky

4

En Swift, ya que es de 2015:

self.textField.moveToEndOfDocument(nil) 
+0

No estoy seguro de cómo esto es posible, pero me sale un accidente selector no válido al llamar moveToEndOfDocument: en mi subclase NSTextField, a pesar de que el método es una extensión en la que un NSResponder NSTextField es ... –

+0

@BenBaron estás seguro de que tienes lo que se cree que tiene en tiempo de ejecución? –

+0

Sí, la excepción confirmó que el objeto era mi subclase personalizada de NSTextField, por lo que debería haber funcionado. Terminé usando la respuesta de simon.d en el mismo campo de texto y funcionó bien, así que definitivamente era un campo de texto ya que era capaz de obtener el editor de campo. –

2

aquí está mi solución Swift:

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