无法在UIInputViewController中使用UICollectionView进行键盘扩展

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在UIInputViewController中使用UICollectionView进行键盘扩展相关的知识,希望对你有一定的参考价值。

我创建了一个UICollectionView子类,我想用它来提供UIInputViewController中的键作为键盘扩展。但我发现尝试实例化UICollectionView会导致键盘在用户切换到它时崩溃。认为它可能与我的UICollectionView子类有关,我尝试用普通的UICollectionView替换它,但这导致了同样的问题。我甚至尝试过实例化对象,但没有对它做任何事情,如下面的摘录,但它仍然使键盘崩溃。

//  KeyboardViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

    UICollectionView *collect = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
}

我无法在键盘上进行任何调试,因为调试器附加到主应用程序的进程,所以我无法分辨导致崩溃的原因。我真的很感激关于是否可以在键盘扩展上使用UICollectionView的任何输入,如果是这样,我如何解决这个问题。

答案

事实证明,问题是由于简单地导入UICollectionView子类的标头引起的,即使我没有使用它。当我删除导入时,我能够实例化一个普通的UICollectionView并将其添加为键盘的子视图。

这意味着我必须做一些相当讨厌的事情来将委托和数据源方法抽象到一个单独的类中,以便它们可以重用,但它可以工作。

以上是关于无法在UIInputViewController中使用UICollectionView进行键盘扩展的主要内容,如果未能解决你的问题,请参考以下文章

UIInputViewController 键盘未在 iOS 8 中显示

无法更改 UIInputView 高度

无法将 Snapkit 导入 KeyboardViewController

自定义输入视图控制器

从键盘扩展中获取安全区域底部插图的高度

Firebase 应用配置崩溃