我正在编写一个主要在夜间使用的通用应用程序。我需要显示键盘,但不希望键盘的浅色使用户失明和/或破坏他们的夜视能力。我不想经历创建自定义键盘的麻烦,所以我认为解决方案可能是在键盘上放置一个 UIView 并给它一个 alpha 为 0.5 或其他值的黑色背景颜色,但是,我无法想象弄清楚如何让 UIView 覆盖键盘。有谁知道如何做到这一点?苹果允许这样做吗?
最佳答案
键盘被发现为新窗口的 subview ,新窗口出现时会添加该窗口。发现它有点老套和脆弱(需要检查新的 iOS 版本,因为它之前已经改变)但它确实有效并且是允许的(我正是在应用程序商店中的应用程序中为夜间模式执行此操作) .
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 代码。
正如您所说,蒙版 View 只是一个带有黑色背景和一定透明度的普通 View 。您还可以使用警报键盘样式,在按键之间留出一个黑色空间。
不幸的是,这种方法并不能阻止小按键闪烁(当您点击按键时弹出的较大按键)达到全亮度。
关于iPhone/iPad 键盘调光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704151/