mejor - teclado para iphone 7 plus
Teclado personalizado para iPhone (4)
Necesito (es decir, un requisito del cliente) proporcionar un teclado personalizado para que el usuario escriba texto en campos y áreas de texto. Ya tengo algo que funciona con el teclado y anexa la prueba a un campo de texto; sin embargo, me gustaría hacerlo más genérico y hacer que actúe como el teclado estándar de iPhone, es decir, aparece cuando el usuario selecciona un control de texto editable. Actualmente mi controlador conoce el objetivo y el objetivo no es editable para evitar el teclado estándar.
¿Hay alguna manera de engancharme al comportamiento de los controles de texto, así que uso mi propio teclado fácilmente?
Gracias, Vic
Aquí hay una idea: modifique el teclado existente para sus propias necesidades. Primero, regístrese para recibir una notificación cuando aparezca en la pantalla:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(modifyKeyboard:)
name:UIKeyboardWillShowNotification
object:nil];
Luego, en su método modifyKeyboard
:
- (void)modifyKeyboard:(NSNotification *)notification
{
UIView *firstResponder = [[[UIApplication sharedApplication] keyWindow] performSelector:@selector(firstResponder)];
for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows])
for (UIView *keyboard in [keyboardWindow subviews])
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
{
MyFancyKeyboardView *customKeyboard = [[MyFancyKeyboardView alloc] initWithFrame: CGRectMake(0, 0, keyboard.frame.size.width, keyboard.frame.size.height);
[keyboard addSubview: customKeyboard];
[customKeyboard release];
}
}
Esto agrega su vista sobre el teclado original, así que asegúrese de hacerlo opaco.
Depende de qué tan personalizado lo desee. Yo personalmente quería un teclado numérico, pero no me gustó el teclado numérico, así que usé el teclado estándar y agregué un filtro estándar, que es parte de las opciones, que rechaza todas las pulsaciones de teclas que no son números ni espacio o eliminar
No puedo decir si a Apple le gustaría esto, sin embargo, y va a ser muy difícil escribir su propio comportamiento que actúa como los otros teclados. Tanto es así, que debería ser declarada una mala idea.
actualización basada en su comentario, suena más como si solo necesitara crear una vista con muchos botones y mover esta vista con la opción animada activada. Entonces podría deslizarse hacia arriba desde la parte inferior como un teclado y deslizarse de nuevo cuando se descarta.
Siempre que no envíe su aplicación a la tienda de aplicaciones, puede usar una técnica llamada método swizzling para reemplazar dinámicamente los métodos de las clases principales en tiempo de ejecución. Por ejemplo:
@interface UIControl(CustomKeyboard)
- (BOOL)__my__becomeFirstResponder
@end
@implementation UIControl(CustomKeyboard)
- (BOOL)__my__becomeFirstResponder
{
BOOL becameFirstResponder = [self __my__becomeFirstResponder];
if ([self canBecomeFirstResponder]) {
[MyKeyboard orderFront];
}
return becameFirstResponder;
}
+ (void)initialize
{
Method old = class_getInstanceMethod(self, @selector(becomeFirstResponder));
Method new = class_getInstanceMethod(self, @selector(__my__becomeFirstResponder));
method_exchangeImplementations(old, new);
}
@end
Por favor , no use algo como esto en ningún código de producción. Además, en realidad no lo he probado, así que YMMV.
Puedes hacerlo con iOS 3.2 o posterior. Verifique la propiedad inputView de UITextField para más detalles.