iOS AlertView应用扩展

时间:2015-04-23 13:36:57

标签: ios ios-app-extension uialertcontroller custom-keyboard

我正在使用自定义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)。

我也试过这个库:

iOS Toast Library

enter image description here

2 个答案:

答案 0 :(得分:4)

不幸的是这一点,但有'没有办法来显示键盘扩展UIAlertView中。实际上,可以显示InputViewController框架之上的任何内容。在Apple的文档中非常清楚:

  

...自定义键盘只能在其UIInputViewController对象的主视图中绘制...无法在自定义键盘主视图的上边缘上方显示关键图稿,因为系统键盘在iPhone上显示你点击并按住顶行的一个键。

对于键盘内部的消息,有一些有用的库可以帮助我们。例如https://github.com/scalessec/Toasthttps://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}}