Я не уверен, изменился ли SDK таким образом, что ответ @ppaulojr больше не работает, или если у меня есть вещи, которые были странными в моей системе, но со следующими настройками я смог заставить его работать!
Должности, связанные с ответом @ ppaulojr, отличные (http://www.iphonedevsdk.com/forum/iphone-sdk-development/6573-howto-customize-uikeyboard.html и http://www.iphonedevsdk.com/forum/iphone-sdk-development/6275-add-toolbar-top-keyboard.html), и они помогли мне заставить это работать.
По-видимому, фактический вид клавиатуры теперь встроен в подвыборку в некоторой более широкой структуре представления UIKeyboard, так что задействована небольшая рекурсия. Я получил эту работу:
-(void) findKeyboard {
NSArray* windows = [[UIApplication sharedApplication] windows];
for (int i = 0; i < [windows count]; i++) {
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows]
objectAtIndex:i];
for(UIView *subView in [tempWindow subviews])
{
[self checkViews:subView];
}
}
}
-(void)checkViews:(UIView *)inView
{
for(UIView *keyboard in inView.subviews)
{
NSLog(@"ViewName: %@", [keyboard description]); // Which view are we looking at
//Check to see if the className of the view we have
//referenced is "UIKeyboard" if so then we found
//the keyboard view that we were looking for
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
{
// Keyboard is now a UIView reference to the
// UIKeyboard we want. From here we can add a subview
// to th keyboard like a new button
//Do what ever you want to do to your keyboard here...
break;
}
// Recurse if not found
[self checkViews:subView];
}
}
Я также обнаружил, что лучшее место, чтобы вызвать эту функцию от -(void)textViewDidBeginEditing:(UITextView *)textView
так:
- (void)textViewDidBeginEditing:(UITextView *)textView {
NSLog(@"textViewDidBeginEditing");
[self findKeyboard];
}
Это делает модификации клавиатуры, как только клавиатура добавляется окно, но до того, как оно на самом деле появится, так что все время, которое он поднимает со дна, оно будет изменено.
Спасибо! Мне нужно взглянуть на это. Исходя из фона Java и C/C++, иногда, как Objective-C, все кажется немного, ну, странно. – alownx