我正在编写一个通用应用程序,主要在夜间使用。我需要显示键盘,但不希望键盘的亮色盲目用户或破坏他们的夜视能力。我不想费劲去创建自定义键盘,所以我想到的解决方案是在键盘上放置一个UIView,并给它一个黑色背景颜色,透明度为0.5左右,但是我无法弄清楚如何覆盖键盘。有人知道怎么做吗?苹果允许这样做吗?
我正在编写一个通用应用程序,主要在夜间使用。我需要显示键盘,但不希望键盘的亮色盲目用户或破坏他们的夜视能力。我不想费劲去创建自定义键盘,所以我想到的解决方案是在键盘上放置一个UIView,并给它一个黑色背景颜色,透明度为0.5左右,但是我无法弄清楚如何覆盖键盘。有人知道怎么做吗?苹果允许这样做吗?
键盘是作为一个子视图添加到新窗口中的,当键盘出现时这个新窗口也会随之出现。找到它有些繁琐且不太稳定(需要在新的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代码。
掩膜视图就像你说的一样,只是一个带有黑色背景和一些透明度的普通视图。您还可以使用警报键盘样式,在按键之间提供黑色空间。
不幸的是,该方法无法防止小的键闪烁(当您点击键时弹出的较大键)以全亮度显示。