2013-05-03 67 views
1

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

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

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

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

回答

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]; 
      } 
     } 
    } 
}