2011-12-26 26 views
5

En mi aplicación tengo que llenar UITextField del valor existente en UIPickerView no a través del teclado.iPhone: ¿Es posible ocultar el teclado al tocar UITextField?

Tengo 2 UITextFields. En valor primero campo de texto se obtiene de teclado y en el segundo valor de campo de texto se obtiene de UIPickerView

así sucesivamente tocando segundo campo de texto Quiero ocultar el teclado y mostrar UIPickerView

aquí añado lo que hago para su mejor referencia

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
     [pickerToolBar setHidden:NO];//shows toolbar 
     [pickerTime setHidden:NO];//shows UIPickerView 
     [textField resignFirstResponder]; 
} 

pero después de escribir el código anterior, el teclado no desaparece.

si tiene alguna idea entonces PLZ me ayude ...

Respuesta

0

Si está rellenando el UITextField basado en el UIPicker, ¿por qué no simplemente deshabilita la interacción del usuario con el UITextField? Todavía puede poner datos allí y el usuario no podrá cambiarlos. Sin embargo, para forzar que el teclado permanezca oculto, puede hacer que el UITextField detecte cuando se toca/cambia/etc y luego hacer que renuncie al primer respondedor.

+1

Mi UIPickerView debe abrirse al tocar UITextField. – iPhone

+1

Luego, bajo la opción de willBeginEditing, haga que aparezca el UIPickerView y resigne el primer respondedor (deshágase del teclado). –

+2

"willBegingEditing" es este método para UITextfield? – iPhone

1

No es posible ocultar el teclado mientras el foco está en el interior del UITextField ...

Debe poner UIPicker en un nivel donde no se oculta detrás del teclado, para que no se convierta en un obstáculo mientras selecciona el valor ...

Y si selecciona el valor de UIPicker, entonces ¿por qué necesita tocar el UITextField? no está tocando en UiTextField, el teclado no se mostrará ...

¡Salud!

1

intente con la propiedad editable del campo de texto como FALSO o la interacción del usuario permite que la propiedad sea falsa y agregue un botón personalizado con el mismo tamaño de su campo de texto con el evento del botón de abrir la vista del selector.

+0

Creo que esta es la mejor solución – Aditya

2

Pruebe UITextfield delegue métodos. pon el siguiente código en el método texfield didBeginEditing.

[texfield resignfirstresonder]; 

Luego, el campo de texto bloqueará la edición y no aparecerá el teclado. Asegúrese de haber adjuntado el campo de texto delegado al propietario del archivo.

+0

Además, también puede invocar su método de presentación UIpickerview después de que usted renuncie al respondedor de campo de texto El código será somhow así: - (void) textFieldDidBeginEditing: (UITextField *) textField { si (campo de texto == URTEXTFIELD) { [campo de texto resignFirstResponder]; [pickerview becomeFirstResponder]; } } – iCreative

1
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
[self.view addGestureRecognizer:gestureRecognizer]; 
gestureRecognizer.cancelsTouchesInView = NO; 


- (void) hideKeyboard 
{ 
    [textfieldname1 resignFirstResponder]; 
    [textfieldname2 resignFirstResponder]; 
} 
+0

¿Puedes explicarme un poco más? – iPhone

+1

cuando ingresa texto en el campo de texto, genera la función UITapGestureRecongnizer. cuando lo deje en el campo de texto y haga clic en la vista fuera del campo de texto, la función hideKeyboard se activará. entonces el teclado es hide. – akk

1

Estas respuestas pueden funcionar, pero nadie le dio la mejor respuesta; Puede reemplazar la vista del teclado con uipickerview cuando se toca el campo de texto :)

UITextField *field = [[UITextField alloc] init]; 
field.inputView = [[UIPickerView alloc] init]; 
Cuestiones relacionadas