我正在使用自定义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'
那么......有没有办法从message
显示App Extension
?
修改
这是一个例子。 IKEA Emoticons Keyboard
在选择一个项目后会显示一条消息(如Android Toast
)。
我也试过这个库:
答案 0 :(得分:4)
不幸的是这一点,但有'没有办法来显示键盘扩展UIAlertView中。实际上,可以显示InputViewController框架之上的任何内容。在Apple的文档中非常清楚:
...自定义键盘只能在其UIInputViewController对象的主视图中绘制...无法在自定义键盘主视图的上边缘上方显示关键图稿,因为系统键盘在iPhone上显示你点击并按住顶行的一个键。
对于键盘内部的消息,有一些有用的库可以帮助我们。例如https://github.com/scalessec/Toast和https://github.com/sergeylenkov/PTHintController。
答案 1 :(得分:2)
最后我解决了这个问题。这不是最好的解决方案,但至少我得到了我想要的效果。
我在Toast
文件中创建了xib
模拟hidden
并将其设置为Toast
。
选择该项目后,我会显示“假”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;
});
2秒钟并再次隐藏。
self.popUpView.isHidden = false
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.popUpView.isHidden = true
}
我不知道这是否是一个很好的解决方案,但我真的必须找到一个解决方案。
对于Swift,你可以使用它:
{{1}}