无法在 UIInputViewController 中使用 UICollectionView 进行键盘扩展
Can't use UICollectionView in UIInputViewController for keyboard extension
我创建了一个 UICollectionView 子类,我想用它来提供 UIInputViewController 中的键作为键盘扩展。但是我发现尝试实例化 UICollectionView 会导致键盘在用户切换到它时崩溃。认为这可能与我的 UICollectionView 子类有关,我尝试用普通的 UICollectionView 替换它,但这导致了同样的问题。我什至尝试只实例化对象但不对其进行任何操作,如下面的摘录所示,但它仍然使键盘崩溃。
// KeyboardViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
UICollectionView *collect = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
}
我无法在键盘上进行任何调试,因为调试器附加到主应用程序的进程,所以我不知道是什么导致了崩溃。我非常感谢任何关于是否可以在键盘扩展上使用 UICollectionView 的意见,如果可以,我该如何解决这个问题。
事实证明,问题是由简单地为 UICollectionView subclass 导入 header 引起的,即使我没有使用它。当我删除导入时,我能够实例化一个普通的 UICollectionView 并将其添加为键盘的子视图。
这意味着我必须做一些相当讨厌的事情来将委托和数据源方法抽象到一个单独的 class 中,以便它们可以重用,但它确实有效。
我创建了一个 UICollectionView 子类,我想用它来提供 UIInputViewController 中的键作为键盘扩展。但是我发现尝试实例化 UICollectionView 会导致键盘在用户切换到它时崩溃。认为这可能与我的 UICollectionView 子类有关,我尝试用普通的 UICollectionView 替换它,但这导致了同样的问题。我什至尝试只实例化对象但不对其进行任何操作,如下面的摘录所示,但它仍然使键盘崩溃。
// KeyboardViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
UICollectionView *collect = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
}
我无法在键盘上进行任何调试,因为调试器附加到主应用程序的进程,所以我不知道是什么导致了崩溃。我非常感谢任何关于是否可以在键盘扩展上使用 UICollectionView 的意见,如果可以,我该如何解决这个问题。
事实证明,问题是由简单地为 UICollectionView subclass 导入 header 引起的,即使我没有使用它。当我删除导入时,我能够实例化一个普通的 UICollectionView 并将其添加为键盘的子视图。
这意味着我必须做一些相当讨厌的事情来将委托和数据源方法抽象到一个单独的 class 中,以便它们可以重用,但它确实有效。