Я хотел вызвать клавиатуру без использования текстового поля, поэтому я создал подкласс UIToolbar и сделал его соответствующим протоколу UIKeyInput. Основываясь на моих тестах с использованием простых распечаток NSLog, я успешно читаю ключевой ввод от пользователя. Моя проблема в том, что мне нужен текст, который набирается на клавиатуре, чтобы обновить табличное представление, которым управляет тот же контроллер представления, что и моя настраиваемая панель инструментов. В основном мой вопрос заключается в следующем: если мой метод обновления находится в моем пользовательском классе панели инструментов, как мне сказать ему обновить представление таблицы? Или, если мой метод обновления находится в моем классе контроллера представления, как мне убедиться, что он вызывается каждый раз при нажатии клавиши?
Я попытался, чтобы моя панель инструментов отправляла уведомление при нажатии клавиши следующим образом:
- (void)insertText:(NSString *)text {
[[NSNotificationCenter defaultCenter] postNotificationName:@"keyPressed" object:self];
и впоследствии слушать его с помощью контроллера представления
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updateForKeyPressed:) name:@"keyPressed" object:nil];
...
- (void)updateForKeyPressed:(NSNotification *)note {
[self update];
}
Это не сработало, но это не было неожиданностью, поскольку я почерпнул эту идею из онлайн-статьи, и я вполне уверен, что делаю это неправильно. На данный момент я в значительной степени нажимаю кнопку, и было бы приятно, если бы кто-нибудь мог указать мне правильное направление. Как всегда, любая помощь приветствуется. Если кто-то хочет увидеть больше моего кода, дайте мне знать, и я могу опубликовать его.