我可以给UIKeyboard着色(黑色)吗?如果是这样,怎么样?

时间:2010-11-17 08:53:24

标签: iphone objective-c cocoa-touch ios

有没有办法获得黑色键盘?默认的是蓝色的。警报风格一个是半透明的黑色。我想知道键盘是否可能是黑色的,例如不透明。或者我是否必须在键盘后面拉出黑色视图以降低透明度效果?

3 个答案:

答案 0 :(得分:13)

简短的回答是,不。您可以显示的唯一两个键盘是普通和警报样式键盘。

有很多方法可以破解,获取ui键盘并改变它的构图。我不建议这样做,因为它会1)可能会让你的应用程序从应用程序商店中被拒绝,2)可能在下次iOS版本出现时中断。

似乎在键盘后面放置黑色或白色视图应该适用于应用程序。在这种情况下,我建议您查看here,以便在键盘下方为黑色视图设置动画。

答案 1 :(得分:4)

如上所述,您可以使用以下两个值中的一个:

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

答案 2 :(得分:4)

以下是隐藏UIKeyboard背景的代码。随意修改它以着色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;
            }
        }
    }
}

收到[self removeKeyboardBackground] NSNotification后,请致电UIKeyboardDidShowNotification。通过将view.hidden=YES;替换为您想要的任何内容,在背景视图中执行任何操作。