teclado tamaño personalizar numerica fila descargar color cambiar aumentar aparece iphone html css iphone-web-app iphone-standalone-web-app

tamaño - teclado iphone 7



Eliminar el asistente de formulario del teclado en la aplicación web independiente de iPhone (3)

¿Es posible eliminar el asistente de formulario del teclado emergente del iPhone en una aplicación web independiente? Sé que el consenso general es que no es posible en Mobile Safari, pero una aplicación independiente se ejecuta en un UIWebView y funciona de manera diferente en varias formas ( example ), así que espero que esto sea posible.

Puedes verlo aquí justo encima del teclado:

Los botones Anterior y Siguiente alternan entre las entradas <form> . Pero tengo un solo elemento <input> , por lo que están deshabilitados. El botón Listo oculta el teclado, pero como tengo un <ul> altura flexible (que ocupa el espacio entre el teclado y el <input> ), y no tengo nada más en esta página, no sirve para nada.

En una pantalla pequeña, y con casi la mitad de la pantalla ocupada por el teclado, los 44 píxeles que conforman esta barra de herramientas son una enorme pérdida de espacio (vale la pena un valor completo de <li> ).

Las aplicaciones nativas de iOS pueden eliminarlo, así que sé que al menos es posible en el teléfono, simplemente no he descubierto una forma de hacerlo en una aplicación web. Esto es de la aplicación de Facebook y la página es muy similar a la mía:

He intentado usar un <input> no envuelto en un <form> y también usar un <div> contenteditable , pero los resultados fueron los mismos. Existen varios estilos personalizados para controlar diferentes aspectos de la interfaz de la aplicación web, pero están mal documentados y no se -webkit- una búsqueda al respecto.

¿Alguna forma de eliminar el asistente de formulario en una aplicación web?


Puede hacer una categoría de UIView y "anular" el comportamiento de addSubview: como en el siguiente ejemplo. Llame al método "exachangeMethods" desde su aplicaciónDidFinishLaunching de su AppDelegate.

#import "UIView+util.h" #import <objc/runtime.h> @implementation UIView (util) // Swaps our custom implementation with the default one // +load is called when a class is loaded into the system + (void) exchangeMethods { SEL origSel = @selector(addSubview:); SEL newSel = @selector(customAddSubview:); Class viewClass = [UIView class]; Method origMethod = class_getInstanceMethod(viewClass, origSel); Method newMethod = class_getInstanceMethod(viewClass, newSel); method_exchangeImplementations(origMethod, newMethod); } - (void) customAddSubview:(UIView *)view{ if( [[view description]rangeOfString:@"<UIWebFormAccessory"].location!=NSNotFound) { return; } // This line at runtime does not go into an infinite loop // because it will call the real method instead of ours. return [self customAddSubview:view]; } @end


Si su aplicación es una aplicación web envuelta en una aplicación nativa de Objetive-C, esto es posible mediante la manipulación de las vistas del teclado.

Primero, regístrese para recibir la notificación de presentación de teclado:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

esto llamará al siguiente método cuando aparezca el teclado:

-(void)keyboardDidShow:(NSNotification*)notif { NSArray *array = [[UIApplication sharedApplication] windows]; for (UIWindow* wind in array) { for (UIView* currView in wind.subviews) { if ([[currView description] hasPrefix:@"<UIPeripheralHostView"]) { for (UIView* perView in currView.subviews) { if ([[perView description] hasPrefix:@"<UIWebFormAccessory"]) { [perView setHidden:YES]; } } } } } }

Este método recorre las vistas en pantalla en busca del asistente de formulario y lo oculta.

NOTA: Apple probablemente no rechazará esto, ya que lo he visto siendo usado por Facebook, etc., pero esta técnica podría romperse en las próximas versiones de iOS.


Todas las señales apuntan a que esto no es posible , incluidas several questions here .