Как получить клавиатуру UIView на iPhone, iOS 3.2 или новее - PullRequest
4 голосов
/ 16 августа 2010

Я использую трюк, чтобы наложить клавиатуру на свою. В основном я добавляю несколько кнопок в качестве подпредставлений на клавиатуре. Вот как я нахожу UIView клавиатуры:

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(UIView* potentialKeyboard in tempWindow.subviews)
    // if the real keyboard-view is found, remember it.
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) {
        if([[potentialKeyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
            keyboard = potentialKeyboard;
        }
        else {
            if([[potentialKeyboard description] hasPrefix:@"<UIKeyboard"] == YES)
                keyboard = potentialKeyboard;
    }

Этот метод вызывается UIKeyboardDidShowNotification. Я бы предпочел, чтобы он вызывался UIKeyboardWillShowNotification, поскольку версия «Сделано» отображается после того, как пользователю показана оригинальная клавиатура. Но если я использую ту же процедуру, что и выше, она выдаст ошибку EXC_BAD_ACCESS. Видимо вид клавиатуры не найден должным образом.

Теперь мой вопрос: есть ли способ получить доступ к UIView клавиатуры во время запуска UIKeyboardWillShowNotification.

Заранее спасибо

1 Ответ

3 голосов
/ 16 августа 2010

Я добавил просто использовал это [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil];

и

- (void)keyboardWillShow { [self performSelector:@selector(addHideKeyboardButtonToKeyboard) withObject:nil afterDelay:0]; } .

Вызывается, когда появится клавиатура.

...