Обновление до пользовательской клавиатуры IOS 6 больше не отвечает на UIControlEventEditingChanged

Мне интересно, есть ли кто-нибудь еще, кто сталкивался с этой проблемой, или кто мог бы помочь?

По сути, я использую пользовательскую клавиатуру на экране в моем приложении.

На экране есть текстовые поля х4. При загрузке первым респондентом является первое текстовое поле. Это все еще прекрасно работает в ios6. Проблема возникает, когда данные добавляются в первое текстовое поле - оно должно запускать UIControlEventEditingChanged (как в ios5), но это не так. В ios5 это запускает проверки введенных данных и, когда необходимо, переключает первого респондента на следующее текстовое поле. Код для этого:

[self.field addTarget:self
                action:@selector(textFieldDidUpdate:)
      forControlEvents:UIControlEventEditingChanged];

Чтобы изолировать проблему, я протестировал код выше в текстовом поле, используя стандартную клавиатуру, и он работает в ios6, что заставляет меня думать, что это должно быть что-то в пользовательской клавиатуре, которая представляет проблему ios6 - возможно, то, что я должен был делать в ios5, но для меня автоматически

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

Я использую этот код, чтобы скрыть клавиатуру:

id keyboardImpl = [objc_getClass("UIKeyboardImpl") sharedInstance];
[keyboardImpl setAlpha:0.0f];

Каждое поле перезагружает клавиатуру.

У меня также есть предупреждения, которые я не знаю, как исправить:

id keyboardImpl = [objc_getClass ("UIKeyboardImpl") sharedInstance];

Неявное объявление библиотечной функции 'objc_getClass' с типом 'id (const char *)'

а также

Метод экземпляра '-sharedInstance' не найден (тип возвращаемого значения по умолчанию равен 'id')

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

Спасибо:)

2 ответа

Решение

Итак, я только что получил это работает, вот пример из метода myCustomKeyboard. Я надеюсь, что этот ответ имеет отношение к вам

- (IBAction)button0Pressed {
self.textField.text = [self.textField.text stringByAppendingString:@"0"];
[self.textField sendActionsForControlEvents:UIControlEventEditingChanged];
[self playSound];
}

главное дополнение

[self.textField sendActionsForControlEvents:UIControlEventEditingChanged];

тогда в моем другом классе у меня есть это

[[doubleCheckAlertView textFieldAtIndex:0] addTarget:self action:@selector(testMethod) forControlEvents:UIControlEventEditingChanged];

а также

-(void) testMethod {
//Do something
}

После окончательного решения этих проблем с пользовательской клавиатурой для iOS6, iOS7 теперь показывает фон позади всех пользовательских клавиатур, которые я создал. Фон в форме стандартной клавиатуры. Кто-нибудь еще сталкивался с этой проблемой с кастомными клавиатурами в iOS7? Или знаете, как решить эту проблему?

Другие вопросы по тегам