通过键盘显示UIAlertController

前端之家收集整理的这篇文章主要介绍了通过键盘显示UIAlertController前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS 8及更低版本中,当显示键盘显示UIActionSheet将通过键盘显示动作片.使用iOS 9,情况就不一样了.

在我的应用程序中,我们有一个聊天功能,并希望通过键盘显示一个动作.我们曾经使用UIActionSheet,直到iOS 8才能正常工作.在iOS 9中,操作列表位于键盘后面.我试过UIActionSheet和U​​IAlertController.

我们想要的是一个action.app中的动作页

我已经尝试将操作表放在自己的窗口中,并覆盖刚刚使键盘消失的canBecomeFirstResponder.

解决方法

我已经在我们的应用程序中实现了这一点.诀窍是让警报控制器出现在不同的窗口上.这是UIActionSheet实现的方式,在iOS 8上也是非常棒的,但是在9,Apple已将键盘实现移到了一个非常高的窗口级(10000000)的窗口中.修复是使您的警报窗口具有更高的窗口级别(作为自定义double值,不使用提供的常量).

当使用具有透明度的自定义窗口时,请确保读取my answer here,关于背景颜色,以防止窗口在旋转过渡期间变黑.

_alertWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
_alertWindow.rootViewController = [UIViewController new];
_alertWindow.windowLevel = 10000001;
_alertWindow.hidden = NO;
_alertWindow.tintColor = [[UIWindow valueForKey:@"keyWindow"] tintColor];

__weak __typeof(self) weakSelf = self;

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Test" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
[alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    weakSelf.alertWindow.hidden = YES;
    weakSelf.alertWindow = nil;
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"Test" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    weakSelf.alertWindow.hidden = YES;
    weakSelf.alertWindow = nil;
}]];

[_alertWindow.rootViewController presentViewController:alert animated:YES completion:nil];

猜你在找的iOS相关文章