2010-11-17 12 views
8

¿Hay alguna manera de obtener un teclado negro? El predeterminado es azulado. Y el estilo Alert uno es negro semitransparente. Me preguntaba si era posible tener el teclado negro, p. no transparente. ¿O tengo que levantar una vista negra detrás del teclado para reducir el efecto de transparencia?¿Puedo teñir (negro) un UIKeyboard? ¿Si es así, cómo?

Respuesta

12

La respuesta corta es NO. Los únicos dos teclados que puede visualizar son los teclados de estilo normal y alerta.

Hay formas de hackear, obtener el teclado ui y cambiar su composición. No recomendaría hacer esto, ya que 1) probablemente haga que su aplicación sea rechazada de la tienda de aplicaciones y 2) probablemente se rompa la próxima vez que aparezca una revisión de iOS.

Parece que poner una vista en blanco o negro detrás del teclado debería funcionar para la aplicación. En este caso, recomendaría mirar here para obtener una forma de animar esa vista negra debajo del teclado.

4

Como Ben afirma anteriormente sólo se puede utilizar uno de estos dos valores:

[textView setKeyboardAppearance:UIKeyboardAppearanceAlert]; 
[textView setKeyboardAppearance:UIKeyboardAppearanceDefault]; 
4

Aquí está el código para eliminar el fondo UIKeyboard escondiéndolo. No dude en para modificarlo para teñir el UIKeyboard:

-(NSArray*)subviewsOfView:(UIView*)view withType:(NSString*)type{ 
NSString *prefix = [NSString stringWithFormat:@"<%@",type]; 
NSMutableArray *subviewArray = [NSMutableArray array]; 
for (UIView *subview in view.subviews) { 
    NSArray *tempArray = [self subviewsOfView:subview withType:type]; 
    for (UIView *view in tempArray) { 
     [subviewArray addObject:view]; 
    } 
} 
if ([[view description]hasPrefix:prefix]) { 
    [subviewArray addObject:view]; 
} 
return [NSArray arrayWithArray:subviewArray]; 
} 

-(void)removeKeyboardBackground{ 
    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) { 
     for (UIView *keyboard in [keyboardWindow subviews]) { 
      for (UIView *view in [self subviewsOfView:keyboard withType:@"UIKBBackgroundView"]) { 
       view.hidden=YES; 
      } 
     } 
    } 
} 

Sólo tiene que llamar [self removeKeyboardBackground] después de haber recibido un NSNotification para UIKeyboardDidShowNotification. Haga lo que quiera con la vista de fondo reemplazando view.hidden=YES; con lo que desee.

Cuestiones relacionadas