Mi aplicación de iPad usa un "dispositivo" externo que actúa como un teclado de hardware. Pero, en algún punto de la configuración, necesito ingresar texto y no puedo usar el "dispositivo" ("dispositivo" no es un teclado). Entonces, ¿hay alguna forma de forzar el teclado suave incluso si tengo un teclado de hardware conectado?Mostrar el teclado de iPhone a pesar de que está conectado un teclado de hardware
Respuesta
Sí. Hemos hecho esto en algunas de nuestras aplicaciones cuando el usuario tiene un "teclado" de escáner Bluetooth emparejado con el dispositivo. Lo que puede hacer es asegurarse de que textField tenga inputAccessoryView y forzar el frame de inputAccessoryView. Esto hará que el teclado se muestre en la pantalla.
Nos añaden los siguientes dos funciones en nuestro AppDelegate. la variable 'inputAccessoryView' es un UIView * hemos declarado en nuestro delegado de la aplicación:
//This function responds to all textFieldBegan editing
// we need to add an accessory view and use that to force the keyboards frame
// this way the keyboard appears when the scanner is attached
-(void) textFieldBegan: (NSNotification *) theNotification
{
UITextField *theTextField = [theNotification object];
// NSLog(@"textFieldBegan: %@", theTextField);
if (!inputAccessoryView) {
inputAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, navigationController.view.frame.size.width, 1)];
}
theTextField.inputAccessoryView = inputAccessoryView;
[self performSelector:@selector(forceKeyboard) withObject:nil afterDelay:0];
}
//Change the inputAccessoryView frame - this is correct for portrait, use a different
// frame for landscape
-(void) forceKeyboard
{
inputAccessoryView.superview.frame = CGRectMake(0, 759, 768, 265);
}
Luego, en nuestra applicationDidFinishLaunching añadimos este observador notificación, de modo que se pueden conseguir un evento cada vez que un campo de texto comenzó a editar
//Setup the textFieldNotifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldBegan:) name:UITextFieldTextDidBeginEditingNotification object:nil];
Espero que ayude!
Como tengo el mismo problema, la solución más cercana que he encontrado es usar la aplicación de Erica Sadun llamada KeysPlease que está disponible a través de Cydia y Modmyi. Su descripción es "Usar soft kb incluso cuando está conectado a BT kb".
Además, he encontrado que si tiene un teclado físico también conectado, en mi caso a través del teclado del iPad, puede abrir el teclado con una tecla que parece corresponderse con la tecla de expulsión de un teclado bluetooth. Tal vez hay una forma de inyectar esta tecla como si estuviera presionada en un teclado conectado?
Me gustaría que hubiera una solución más oficial de codificación a esto.
No hay manera de hacer esto con el SDK actual. Por favor, avísele a Apple a través del the Bug Reporter.
Cuando mi aplicación conecta el dispositivo bluetooth, el teclado no se muestra. Intento establecer forzar el marco de la entrada AccessView como dice Brian Robbins. No funcionó.
Entonces yo uso una forma estúpida de solve.I encontrado al hacer clic en el campo de texto o Textview una vez más, el teclado mostrará. Así que solo necesito simular el toque en el campo de texto o en la vista de texto una vez, funciona.
Si usted quiere hacer un cierto tacto simular, mira esto. https://github.com/HUYU2048/PTFakeTouch
- 1. Fuerza en el teclado de pantalla para mostrar cuando el teclado bluetooth está conectado
- 2. Mostrar el teclado del iPhone programáticamente
- 3. ¿Cómo forzar a mostrar y ocultar el teclado virtual si no hay ningún teclado de hardware disponible?
- 4. Teclado de iPhone personalizado
- 5. ¿Cómo sé si hay un teclado de hardware?
- 6. Teclado numérico predeterminado de iPhone
- 7. Botón para mostrar el teclado virtual?
- 8. atajos de teclado iPhone/iPad?
- 9. Simulando abrir/cerrar el teclado de hardware en el emulador
- 10. cómo mostrar un teclado numérico
- 11. Cómo mostrar el teclado para un UIView
- 12. Cómo mostrar el teclado numérico
- 13. ¿Cómo mostrar un teclado a través de presionar un NSButton?
- 14. iPhone - El teclado oculta TextField
- 15. ¿Cómo detectar la presencia de hardware en el teclado?
- 16. iPhone datepicker en lugar de teclado?
- 17. Cómo mostrar el teclado de iPhone/iPad a través de una pantalla completa Aplicación OpenGL ES
- 18. Cómo mostrar el emulador de Android sin un teclado
- 19. iPhone 5 Tamaño del teclado
- 20. ¿Cómo forzar al teclado a mostrar/ocultar?
- 21. iPhone: Bloques de teclado en pantalla
- 22. ¿Cómo escribo usando mi teclado en el simulador de iphone?
- 23. teclado de iphone sin vista de texto
- 24. Recibir eventos de teclado de iPhone
- 25. ResignFirstResponder no descarta el teclado (iPhone)
- 26. Mostrar teclado de software sin EditText
- 27. Buscar teclado en el iPhone usando PhoneGap
- 28. Mostrar el teclado en contenteditable UIWebView programmatically
- 29. Mostrar el teclado virtual para el cuadro de diálogo
- 30. ¿Cómo mostrar el teclado sin tocar UISearchbar?
Hola Brian, en primer lugar muchas gracias para su solución. Desafortunadamente, me encontré con el problema de la congelación del teclado o la falla de toda la aplicación después de llamar al teclado un par de veces. ¿Tuviste el mismo problema, o mejor aún, una solución? :-) Gracias – Julian
No, no hemos visto que eso suceda en absoluto. Hemos utilizado este código en docenas de aplicaciones que han tenido un amplio uso de la feria, y hasta ahora nadie ha mencionado ese tipo de problema. –
A pesar de mis mejores esfuerzos, me encontré con el mismo problema: debe haber cierta interdependencia con algún otro código mío, ya que el código funcionaba perfectamente en una aplicación diferente. Nuevamente, ¡gracias por tu esfuerzo! – Julian