Скрытие клавиатуры iPhone в iOS 5 - PullRequest
1 голос
/ 19 февраля 2012

Как найти и удалить вид, соответствующий встроенной клавиатуре iPhone?

В этом проекте пользователь вводит данные в UITextField, который всегда является первым респондентом.В предыдущих версиях iOS (2.1 -> 4, я полагаю) мы добавляли прослушиватель для

[[NSNotificationCenter defaultCenter]
                    addObserver: self
                       selector: @selector(keyboardWillShow:)
                           name: UIKeyboardWillShowNotification
                         object: nil
];

Когда клавиатура собирается показать, мы затем удаляем ее (и наше текстовое поле остается первым респондентом).

- (void)keyboardWillShow:(NSNotification *)note {
    UIWindow* tempWindow;
    UIView* keyboard;
    UIView* minusView = nil;
    for(int c = 0; c < [[[UIApplication sharedApplication]
                                            windows] count]; c ++) {
        tempWindow = [[[UIApplication sharedApplication]
                                            windows] objectAtIndex:c];      
        // Loop through all views in the current window
        for(int i = 0; i < [tempWindow.subviews count]; i++) {
            keyboard = [tempWindow.subviews objectAtIndex:i];
            //the keyboard view description always starts with <UIKeyboard
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
                minusView = keyboard;
            }
        }
    }
    [minusView removeFromSuperview];
}

Этот подход больше не работает, потому что в iOS 5 нет представления типа UIKeyboard, которое можно найти таким образом.

Однако есть представлениесо следующим описанием <UITextEffectsWindow: 0x693cca0; frame = (0 0; 320 480); hidden = YES; opaque = NO; layer = <UIWindowLayer: 0x693cdb0>>, которое я пытался удалить с помощью методов removeFromSuperview и setIsHidden.

Есть ли какие-либо советы по снятию клавиатуры и сохранению статуса первого респондента?Снимок экрана ниже - это экран загрузки, который отображает расположение кнопок в соответствии с назначением.Правый экран показывает, как встроенная клавиатура скрывает кнопки калькулятора.

Screenshot of app (loading screen) Built-in keyboard obscuring my buttons

1 Ответ

6 голосов
/ 19 февраля 2012

Вы не должны снимать клавиатуру. Окно клавиатуры закрытое и, как вы обнаружили, может меняться между выпусками.

Правильный способ получить желаемый эффект - установить свойство inputView вашего текстового поля для представления, содержащего кнопки калькулятора. Тогда iOS позаботится о том, чтобы вы показывали это представление, вместо показа клавиатуры по умолчанию.

Это задокументировано в «Пользовательские представления для ввода данных» в Руководстве по программированию текста, Интернета и редактирования для iOS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...