Показать клавиатуру с контроллером представления контейнера

Мне нужно показать клавиатуру в UIViewController без использования текстового поля. Я достигаю этого путем реализации UIKeyInput протокол, который работает хорошо.

Я переместил UIViewController в контроллер представления контейнера, поэтому у меня по сути есть UIViewController встроен в UIViewController, Это довольно стандартный шаблон для достижения того, чего я пытаюсь достичь. Тем не менее, теперь, когда у меня есть эта функция контроллера представления контейнера, UIKeyInput больше не отправляет уведомления UIViewController, он отправляет их родительскому контроллеру (контейнеру), что не идеально.

Кто-нибудь знает, как я могу получить UIKeyInput протокол для работы внутри моего дочернего контроллера вида?

Ниже показано, как добавить дочерний контроллер представления в контейнер.

[self willMoveToParentViewController:nil];
[self.currentChildViewController removeFromParentViewController];

self.currentChildViewController = viewController;

viewController.view.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));

[self addChildViewController:viewController];
[self.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self];

Вот моя реализация протокола:

@interface ChildViewController : UIViewController <UIKeyInput, UITextInputTraits>

Если реализовано в дочернем контроллере представления, эти функции никогда не будут вызваны. Они вызываются, если протокол реализован в родительском (контейнерном) контроллере представления.

- (void)insertText:(NSString *)text
- (void)deleteBackward

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

0 ответов

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