2012-01-02 33 views
4

我在写一个通用的应用程序,主要用于晚上。我将需要显示一个键盘,但不希望键盘的浅色盲视用户和/或破坏他们的夜视。我不想经历麻烦来创建自定义键盘,所以我认为解决方案可能是将UIView放在键盘上,并给它一个0.5的alpha值的黑色背景色,但是我无法确定了解如何获得UIView来覆盖键盘。有谁知道如何做到这一点?苹果是否允许这样做?iPhone/iPad键盘调光

回答

6

键盘被找到作为新窗口的子视图,当它出现时被添加。发现它有点冒险和脆弱(需要在新的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代码。

正如你所说,遮罩视图只是一个带有黑色背景和一些透明度的普通视图。您还可以使用提供按键之间的黑色空间的提示键盘样式。

不幸的是,这种方法并不能防止小键闪烁(当你点击一个键时弹出的较大键)处于全亮状态。

+0

我可以证实,这也适用于iPad!谢谢! – Vic320 2012-01-02 21:27:24

+0

但我注意到,当你在iPad上分割键盘时,这不能正常工作。我怀疑我需要创建2个UIView--每个键盘的一半... – Vic320 2012-01-07 06:32:45

+0

好点 - 正如我所说我没有在iPad上这样做,所以我没有注意到这一点。像引入分离键盘这样的东西正是为什么这是实现这一点的脆弱方式。 – jrturton 2012-01-07 08:50:28

0

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

+0

谢谢,但没有,这是行不通的...... – Vic320 2012-01-02 18:43:43