我正在寻找一种无需使用自定义键盘即可修改系统键盘的方法。
例如,我想覆盖一个额外的 UIView 或以编程方式覆盖一个按钮。如果您没有为 UITextField 或 UITextView 指定 inputView,如何获取系统提供的键盘实例?
我的想法是获取对键盘的引用并在显示之前插入一两个子视图。似乎没有为此的公共 API(我确信有充分的理由)。
我不关心访问私有 API 或应用商店拒绝,因为这是一个私有的内部应用程序。
注册 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];
}
}
}
}