iPhone/iPad键盘变暗

4

我正在编写一个通用应用程序,主要在夜间使用。我需要显示键盘,但不希望键盘的亮色盲目用户或破坏他们的夜视能力。我不想费劲去创建自定义键盘,所以我想到的解决方案是在键盘上放置一个UIView,并给它一个黑色背景颜色,透明度为0.5左右,但是我无法弄清楚如何覆盖键盘。有人知道怎么做吗?苹果允许这样做吗?

2个回答

6

键盘是作为一个子视图添加到新窗口中的,当键盘出现时这个新窗口也会随之出现。找到它有些繁琐且不太稳定(需要在新的iOS版本上进行检查,因为之前已经发生过更改),但它确实有效,并且是允许的(我在App Store上发布的应用的夜间模式就是这样实现的)。

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; // This assumes you aren't adding any new windows yourself

for(UIView *keyboard in tempWindow.subviews) 
{
    if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) // This was different in an earlier version of iOS, and may well change again in the future!
    {
        [keyboard addSubview:maskView];
        break;
    }
}

这是在响应UIKeyboardDidShowNotification对象的方法中完成的。我还没有在iPad上尝试过,这只是iPhone代码。

掩膜视图就像你说的一样,只是一个带有黑色背景和一些透明度的普通视图。您还可以使用警报键盘样式,在按键之间提供黑色空间。

不幸的是,该方法无法防止小的键闪烁(当您点击键时弹出的较大键)以全亮度显示。


我注意到当你在iPad上分割键盘时,这并不起作用。我怀疑我需要创建两个UIView - 一个用于键盘的每一半... - Vic320
好眼力 - 就像我说的,我在iPad上没有做过这个,所以我没有注意到。像分割键盘这样的东西就是为什么这种方式实现起来非常脆弱的原因。 - jrturton

0
尝试在正在使用的UITextFiled/UITextArea的属性上应用所需的更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接