在iOS 5中隐藏iPhone键盘

时间:2012-02-19 03:24:32

标签: iphone ios5 uikeyboard

如何查找和删除与内置iPhone键盘对应的视图?

在此项目中,用户将输入输入UITextField,始终是第一个响应者。 在以前的iOS版本中(2.1 - > 4,我相信)我们为

添加了一个监听器
[[NSNotificationCenter defaultCenter]
                    addObserver: self
                       selector: @selector(keyboardWillShow:)
                           name: UIKeyboardWillShowNotification
                         object: nil
];

当键盘即将显示时,我们将其删除(我们的文本字段仍为第一响应者)。

- (void)keyboardWillShow:(NSNotification *)note {
    UIWindow* tempWindow;
    UIView* keyboard;
    UIView* minusView = nil;
    for(int c = 0; c < [[[UIApplication sharedApplication]
                                            windows] count]; c ++) {
        tempWindow = [[[UIApplication sharedApplication]
                                            windows] objectAtIndex:c];      
        // Loop through all views in the current window
        for(int i = 0; i < [tempWindow.subviews count]; i++) {
            keyboard = [tempWindow.subviews objectAtIndex:i];
            //the keyboard view description always starts with <UIKeyboard
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
                minusView = keyboard;
            }
        }
    }
    [minusView removeFromSuperview];
}

此方法不再有效,因为在iOS 5中没有可以通过这种方式找到类型UIKeyboard的视图。

但是,有一个视图,其中包含我尝试使用<UITextEffectsWindow: 0x693cca0; frame = (0 0; 320 480); hidden = YES; opaque = NO; layer = <UIWindowLayer: 0x693cdb0>>removeFromSuperview方法删除的以下说明setIsHidden

有关移除键盘并保持第一响应者状态的任何提示吗?

下面的左侧屏幕截图是加载屏幕,它按预期描绘按钮布局。右侧屏幕显示内置键盘如何遮挡计算器按钮。

Screenshot of app (loading screen) Built-in keyboard obscuring my buttons

1 个答案:

答案 0 :(得分:6)

您不应该移除键盘。键盘窗口是私有的,正如您所发现的,可能会在不同版本之间进行更改。

获得所需效果的正确方法是将文本字段的inputView属性设置为包含计算器按钮的视图。然后iOS将负责为您显示该视图,而不是显示默认键盘。

文本,Web和编辑iOS编程指南中的“Custom Views for Data Input”中记录了这一点。