SDK forma segura de ocultar el keyboard del iPad cuando la vista de text está enfocada

Tengo una aplicación de iPad donde el usuario navegará usando la pantalla táctil O el keyboard Bluetooth. Tengo un textView oculto que está en foco (primer respondedor) y aquí detecto lo que se ingresa desde el keyboard.

Pero, cuando desconecto el keyboard, tengo un problema, aparece el keyboard virtual.

¿Puedo comprobar si el keyboard Bluetooth está conectado o no, y para configurar o renunciar al primer respondedor en viewDidLoad o algo así?

o

Tengo notificación:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil]; 

¿Puedo ocultar el keyboard de alguna manera cuando se activa keyboardWillAppear? Intenté [textView resignFirstResponder], pero sin éxito: |

Puede establecer el inputView en una vista transparente:

 UIView *emptyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; emptyView.backgroundColor = [UIColor clearColor]; textView.inputView = emptyView; 

En teoría, eso pondría el keyboard en pantalla en una vista vacía para que no se viera. Si no acepta una vista sin marco, intente colocar el ancho y la altura en 1. No afectaría el keyboard externo; simplemente no aparecería en el dispositivo.

Puedes usar performSelector: para eso.

 - (void)hideKeyboard:(UITextView *)textView { [textView resignFirstResponder]; } - (void)keyboardWillAppear:(NSNotification *)notification { UITextView *textView = (UITextView *)[self.view viewWithTag:TEXTVIEW_TAG]; [self performSelector:@selector(hideKeyboard:) withObject:textView]; } - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil]; } 

Tiene que progtwigr la renuncia del primer respondedor de textView a una queue de despacho, porque probablemente el process de convertirse en un primer respondedor todavía no se ha hecho. Solución fácil con la plantilla de envío de XCode:

 int64_t delayInSeconds = 0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [self.textView resignFirstResponder]; });