2010-11-17 9 views
8

C'è un modo per ottenere una tastiera nera? Quello predefinito è bluastro. E lo stile Alert è nero semi-trasparente. Mi stavo chiedendo se fosse possibile avere la tastiera nera, ad es. non trasparente. O devo alzare una vista nera dietro la tastiera per ridurre l'effetto di trasparenza?Posso tingere (nero) un UIKeyboard? Se é cosi, come?

risposta

12

La risposta breve è, NO. Le uniche due tastiere che puoi visualizzare sono le normali e in stile tastiera.

Ci sono modi per hackerare, ottenere la tastiera dell'interfaccia utente e cambiarne la composizione. Non consiglierei di farlo poiché 1) probabilmente farà sì che l'app venga respinta dall'app store e 2) probabilmente si interromperà la prossima volta che verrà visualizzata una versione di iOS.

Sembra che mettere una vista bianca o nera dietro la tastiera dovrebbe funzionare per l'applicazione. In questo caso, consiglierei di cercare here per un modo per animare quella vista nera sotto la tastiera.

4

Come Ben afferma sopra si può semplicemente utilizzare uno di questi due valori:

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

Ecco il codice per rimuovere la UIKeyboard sfondo nascondendolo. Sentitevi liberi di modificarlo per colorare l'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; 
      } 
     } 
    } 
} 

Basta chiamare [self removeKeyboardBackground] dopo aver ricevuto un NSNotification per UIKeyboardDidShowNotification. Fai quello che vuoi con la vista di sfondo sostituendo view.hidden=YES; con qualsiasi cosa desideri.

Problemi correlati