iOS AlertView 应用程序扩展
iOS AlertView App Extension
我在自定义 keyboard
(iOS App Extension)
工作。 I have a UICollectionView
in my Keyboard
Layout
, so when one item
is selected I want to show a message
(UIAlerView
for example) .
这是我的代码:
- (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
显示一条消息(类似于选择一项后的 Android Toast
)。
我也试过这个库:
遗憾的是,没有办法在键盘扩展中显示 UIAlertView。实际上,在 InputViewController 的 frame 之上,什么都不能显示。 Apple 的文档中非常清楚:
...a custom keyboard can draw only within the primary view of its UIInputViewController object... it is not possible to display key artwork above the top edge of a custom keyboard’s primary view, as the system keyboard does on iPhone when you tap and hold a key in the top row.
至于键盘内的消息,有一些有用的库可以帮助我们。例如 https://github.com/scalessec/Toast and https://github.com/sergeylenkov/PTHintController。
我终于解决了这个问题。这不是最好的解决方案,但至少我得到了我想要的效果。
我在 xib
文件中创建了一个 View
模拟 Toast
,并将其设置为 hidden
。
选中项目后,我显示 "faked" 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;
});
我不知道这是否是一个好的解决方案,但我确实必须为此找到解决方案。
对于 Swift 你可以使用这个 :
self.popUpView.isHidden = false
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.popUpView.isHidden = true
}
我在自定义 keyboard
(iOS App Extension)
工作。 I have a UICollectionView
in my Keyboard
Layout
, so when one item
is selected I want to show a message
(UIAlerView
for example) .
这是我的代码:
- (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
显示一条消息(类似于选择一项后的 Android Toast
)。
我也试过这个库:
遗憾的是,没有办法在键盘扩展中显示 UIAlertView。实际上,在 InputViewController 的 frame 之上,什么都不能显示。 Apple 的文档中非常清楚:
...a custom keyboard can draw only within the primary view of its UIInputViewController object... it is not possible to display key artwork above the top edge of a custom keyboard’s primary view, as the system keyboard does on iPhone when you tap and hold a key in the top row.
至于键盘内的消息,有一些有用的库可以帮助我们。例如 https://github.com/scalessec/Toast and https://github.com/sergeylenkov/PTHintController。
我终于解决了这个问题。这不是最好的解决方案,但至少我得到了我想要的效果。
我在 xib
文件中创建了一个 View
模拟 Toast
,并将其设置为 hidden
。
选中项目后,我显示 "faked" 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;
});
我不知道这是否是一个好的解决方案,但我确实必须为此找到解决方案。
对于 Swift 你可以使用这个 :
self.popUpView.isHidden = false
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.popUpView.isHidden = true
}