在 iOS 上修改标准键盘

Posted

技术标签:

【中文标题】在 iOS 上修改标准键盘【英文标题】:Modifying standard keyboard on iOS 【发布时间】:2013-05-03 19:22:22 【问题描述】:

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

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

我的想法是获取对键盘的引用并在显示之前插入一两个子视图。似乎没有用于此的公共 API(我确信有充分的理由)。

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

【问题讨论】:

【参考方案1】:

注册 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];
            
        
    

【讨论】:

以上是关于在 iOS 上修改标准键盘的主要内容,如果未能解决你的问题,请参考以下文章

Unity可以从iOS上的蓝牙键盘读取输入吗?

如何在IOS键盘顶部的键盘上添加完成按钮?

设备上的 iOS 8 自定义键盘

如何在 iOS 7 上模拟键盘动画以将“完成”按钮添加到数字键盘?

iOS崩溃:在键盘上敲击地球仪以转到表情符号键盘会导致崩溃

iOS 7:如何隐藏键盘上的 DONE 按钮