Mover el cursor al comienzo de UITextField

¿Hay alguna manera de hacer que el cursor esté al comienzo de un UITextField?

Cuando visualizo el control con contenido, el cursor se coloca al final de la cadena. Me gustaría moverlo al principio.

UITextField ajusta al protocolo UITextInput , que proporciona métodos que le permiten controlar el rango seleccionado. Esto funciona en mi prueba:

 -(void)textFieldDidBeginEditing:(UITextField *)textField { textField.selectedTextRange = [textField textRangeFromPosition:textField.beginningOfDocument toPosition:textField.beginningOfDocument]; } 

Estás luchando contra el sistema en este caso. UITextField no tiene propiedades públicas para establecer la posición del cursor (que en realidad se correlaciona con el comienzo de la selección actual). Si puede usar una UITextView en UITextView lugar, los siguientes métodos delegates UITextView el cursor al comienzo del texto. Solo tenga en cuenta que los usuarios no esperarán este comportamiento y que deben verificar sus motivos para querer hacerlo.

 - (void)textViewDidBeginEditing:(UITextView *)textView { shouldMoveCursor = YES; } - (void)textViewDidChangeSelection:(UITextView *)textView { if(shouldMoveCursor) { NSRange beginningRange = NSMakeRange(0, 0); NSRange currentRange = [textView selectedRange]; if(!NSEqualRanges(beginningRange, currentRange)) [textView setSelectedRange:beginningRange]; shouldMoveCursor = NO; } } 

Donde shouldMoveCursor es una variable BOOL que mantiene en su controlador.

funciona para mi

 // Get current selected range , this example assumes is an insertion point or empty selection UITextRange *selectedRange = [textField selectedTextRange]; // Calculate the new position, - for left and + for right UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:3]; // Construct a new range using the object that adopts the UITextInput, our textfield UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition]; // Set new range [textField setSelectedTextRange:newRange];