在iOS上修改标准键盘

时间:2013-05-03 19:22:23

标签: ios uikit

我正在寻找一种不使用自定义键盘来修改系统键盘的方法。

例如,我想以编程方式覆盖额外的UIView或掩盖按钮。如果没有为UITextField或UITextView指定inputView,我如何获得系统提供的键盘实例?

我的想法是获得对键盘的引用,并在显示之前插入一个或两个子视图。似乎没有这方面的公共API(有充分理由我确定)。

我不关心访问私有API或应用商店拒绝,因为这是一个私人的内部应用。

1 个答案:

答案 0 :(得分:3)

注册UIKeyboardDidShow通知

   [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardDidShow:)
                                                 name:UIKeyboardDidShowNotification
                                               object:nil];

然后在处理程序

- (void)keyboardDidShow:(NSNotification *)notification {

    //Locate keyboard view
    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {

        for (UIView *keyboard in [keyboardWindow subviews]) {

            if([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) {
                // Add your custom view
                UIView *customView = [[UIView alloc]initWithFrame:CGRectMake(83, 174, 156, 38)];
                customView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.3];

                [keyboard addSubview:customView];

                [[NSNotificationCenter defaultCenter] removeObserver:self];
            }
        }
    }
}