4

我正在编写一个主要在晚上使用的通用应用程序。我将需要显示一个键盘,但不希望键盘的浅色使用户失明和/或破坏他们的夜视能力。我不想费力地创建自定义键盘,所以我认为解决方案可能是将 UIView 放在键盘上并给它一个黑色背景颜色,alpha 为 0.5 或其他东西,但是,我想不通了解如何让 UIView 覆盖键盘。有谁知道如何做到这一点?苹果允许这样做吗?

4

2 回答 2

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 代码。

正如您所说,遮罩视图只是具有黑色背景和一定透明度的普通视图。您还可以使用警报键盘样式,该样式在按键之间留有黑色空间。

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

于 2012-01-02T19:27:49.173 回答
0

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

于 2012-01-02T18:38:42.330 回答