2011-07-06 18 views
5

Mi aplicación tiene un controlador de navegación. Todos mis controladores pop y push. Un controlador tiene 12 campos de texto. 2 campos de texto invocan a otros controladores. Este es un UIDatePicker y luego con los métodos de delegación establecemos la fecha actual en estos dos campos.No se puede ocultar el teclado en iOS

- (IBAction) beginEditingDateStart:(id) sender{ 
[sender resignFirstResponder]; 

[self.remedyName becomeFirstResponder]; 
[self.remedyName resignFirstResponder]; 
[self.doseName resignFirstResponder]; 
[self.count resignFirstResponder]; 
[self.dateFrom resignFirstResponder]; 
[self.dateTill resignFirstResponder]; 
[self.doseAmount resignFirstResponder]; 

[self.view endEditing:NO]; 
[self.view resignFirstResponder]; 
    DatePickerViewController *dateView = [[DatePickerViewController alloc] initWithNibNameAndKey:@"DatePickerViewController" bundle:[NSBundle mainBundle] key:@"from"]; 
dateView.delegate = self; 
[self.navigationController pushViewController:dateView animated:YES]; 
[dateView release]; 

El problema es cuando comienzo a editar estos dos campos y el teclado está activo, vamos al controlador selector de fechas con el teclado y se esconde mi selector de fechas. Sé que este problema se puede resolver, pero no sé cómo. Por favor, ayúdame.

Respuesta

0

Podría ser esta línea que está causando el problema:

[self.remedyName becomeFirstResponder]; 

lo contrario se puede hacer algo como esto para asegurarse de que todos los puntos de vista han renunciado primer nivel de respuesta:

- (void)resignFirstResponderForSubviewsOfView:(UIView *)aView { 

    for (UIView *subview in [aView subviews]) { 

     if ([subview isKindOfClass:[UITextField class]] || [subview isKindOfClass:[UITextView class]]) 
      [(id)subview resignFirstResponder]; 

     [self resignFirstResponderForSubviewsOfView:subview]; 
    } 
} 

Entonces llamarlo como esto desde el controlador de vista:

[self resignFirstResponderForSubviewsOfView:[self view]]; 
+0

Gracias por su respuesta. Verifico tu código pero el teclado no desaparece. Intento todo y veo muchos temas, pero no ayuda. – Oleg

13

Esto pedirá a cada vista que renuncie a la primera respuesta.

[self.view endEditing:YES]; 

Como esto le pedirá a cada vista que renuncie al socorrista, todas las demás llamadas para renunciar al primer respondedor son redundantes. Ellos deben ser retirados y para reducir el riesgo de llamar a algo de forma incorrecta o fuera o se vuelven como

[self.remedyName becomeFirstResponder]; 

Usted puede leer más sobre esto en los Apple Docs

+0

Gracias pero yo también lo hago. – Oleg

+0

Los argumentos 'SÍ' son para obligar a las vistas a que renuncien a la primera respuesta. Usaste 'NO' así que tal vez una vista no estaba lista para dejarlo ir –

+0

También tengo un uiscrollview arriba de mi self.view. Si ayuda. – Oleg

Cuestiones relacionadas