2009-05-14 16 views

Respuesta

1

No hay forma de evitar que muevan el cursor. Puede, sin embargo, evitar que la edición del texto excepto al final mediante la aplicación del método de

– textField:shouldChangeCharactersInRange:replacementString:

de delegado de su campo de texto.

Editar: también puede establecer userInteractionEnabled en NO para que el usuario no pueda tocar el campo. Llame al becomeFirstResponder manualmente para que el campo se enfoque porque el usuario no puede tocar para enfocar.

+0

Eso es lo que tengo ahora, pero es un poco flojo para el usuario cuando se mueven el cursor y escriba una clave y los caracteres añadidos al final de la cadena. No es ideal ... pero no es fatal. Buscando una manera fácil de desactivar toques en el UITextField. Puede ir a la ruta de la subclase si esa es mi única opción. – Meltemi

+0

¿Puedo preguntar qué estás tratando de lograr? ¿Por qué no permite colocar el cursor? Pero sí, parece que simplemente configurar userInteractionEnabled = NO sería la mejor solución. –

0

No sé que hay una forma integrada de hacerlo ... tal vez podría subclase UITextField y controlar los eventos táctiles usted mismo?

0

No he comprobado si puede desactivar la lupa, pero la forma recomendada para deshabilitar el comportamiento de edición en un UIResponder (y por lo tanto un UITextField) es implementar canPerformAction:withSender de UIResponder.

Ver UIResponder documentation.

Tal vez si regresa "NO" para la acción de seleccionar y selectAll se puede desactivar.

Otro, más brutal, es camino para interceptar cualquier caso táctil y restablecer el cursor hasta el final.

1

Le sugiero que compruebe la propiedad gestureRecognizers.

Usted encontrará una gran cantidad de ellos en la matriz y puede ser que desee o bien eliminarlos todos o para encontrar los que activa el evento que desea interceptar y eliminar/reemplazarlo.

que lo utilizaron para quitar copiar/pegar y funcionalidades de la lupa de un UITextField

+0

Xcode me dice que UITextField "no tiene una colección de salida" para los reconocedores de gestos. – radven

6

Ésta es una vieja pregunta, pero yo estaba buscando una respuesta a la misma pregunta, y se encontró una solución.

En realidad es bastante simple evitar que el usuario mueva el cursor. Sólo subclase UITextField y proporcionar la siguiente implementación de caretRectForPosition:

- (CGRect)caretRectForPosition:(UITextPosition *)position 
{ 
    return [super caretRectForPosition:self.endOfDocument]; 
} 
+0

Solo me gustaría añadir que, si bien esto impide que el cursor se mueva, no desactiva la lupa (al menos no en iOS 7). El título y la pregunta piden cosas diferentes. – iMaddin

1

NO SUBCLASES necesario.

Puede usar UITextFieldDelegate. Hará deshabilitar la lupa & selección de texto.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    textField.userInteractionEnabled = NO; 
    return YES; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    textField.userInteractionEnabled = YES; 
} 

Nota: Esto es sólo un bypass.