使用Container View Controller显示键盘

时间:2018-10-08 12:23:47

标签: ios objective-c uicontainerview uikeyinput

我需要在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添加到视图的解决方案。我知道这行得通,但这是一个hack,我宁愿不这样做。

0 个答案:

没有答案