iOS AlertView应用程序扩展
我正在使用自定义keyboard
(iOS App Extension)
。 我有一个UICollectionView
在我的Keyboard
Layout
,所以当一个item
被选中,我想显示一个message
(例如UIAlerView
)。
这是我的代码:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ ... UIAlertController * alert= [UIAlertController alertControllerWithTitle:@"My Title" message:@"Enter User Credentials" preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alert animated:YES completion:nil]; }
我得到这个错误: 'Feature not available in extensions of type com.apple.keyboard-service'
所以…有什么办法显示来自App Extension
的message
?
编辑:
这是一个例子。 IKEA Emoticons Keyboard
显示一条消息(如select一个项目后的Android Toast
)。
我也试过这个库:
iOS Toast图书馆
可悲的是,但是没有办法在键盘扩展中显示UIAlertView。 实际上,InputViewController的框架上面没有任何东西可以显示出来。 苹果公司的文档中非常清楚:
…自定义键盘只能在其UIInputViewController对象的主视图中绘制…不能在自定义键盘的主视图的顶部边缘上方显示关键graphics,因为系统键盘在iPhone上点击在最上面一行按住一个键。
至于键盘内的信息,有一些有用的库可以帮助我们。 例如https://github.com/scalessec/Toast和https://github.com/sergeylenkov/PTHintController 。
最后我解决了这个问题。 这不是最好的解决scheme,但至less我得到了我想要的效果。
我已经在xib
文件中创build了一个模拟Toast
的xib
并将其设置为hidden
。
当select该项目时,我会显示“伪造” Toast
2秒钟并再次隐藏。
self.popUpView.hidden = NO; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ self.popUpView.hidden = YES; });
我不知道这是不是一个好的解决scheme,但我真的不得不find一个解决scheme。