2013-05-03 68 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]; 
      } 
     } 
    } 
}