UIAlertController 在 iOS 9 中不起作用

Posted

技术标签:

【中文标题】UIAlertController 在 iOS 9 中不起作用【英文标题】:UIAlertController not working in iOS 9 【发布时间】:2015-09-24 13:12:30 【问题描述】:

我添加了显示登录和密码文本字段的 UIAlertController 代码,它适用于 ios 8,但在 iOS 9 中不起作用。文本框缩小如下图

我正在尝试的代码如下:

 - (void)toggleLoginLdap:(UIViewController *)currentVC
 

 if ([UIAlertController class])
        


            self.alertController= [UIAlertController
                                       alertControllerWithTitle:@"Title of Msg"
                                       message:@"Hello"
                                       preferredStyle:UIAlertControllerStyleAlert];

            UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                       handler:^(UIAlertAction * action)
                                                           NSString *userName = self.alertController.textFields[0].text;
                                                           NSString *password = self.alertController.textFields[1].text;



                                                       ];
            UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel
                                                           handler:^(UIAlertAction * action) 


                                                               [self.alertController dismissViewControllerAnimated:YES completion:nil];

                                                           ];


            [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) 
                 textField.placeholder = @"Username/Email";
                 //textField.preservesSuperviewLayoutMargins = YES;
                textField.autoresizesSubviews = YES;
            ];
            [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) 
                textField.placeholder = @"Password";
                textField.secureTextEntry = YES;
            ];
            //alertController.view.autoresizesSubviews = YES;
            [self.alertController addAction:ok];
            [self.alertController addAction:cancel];
            [currentVC presentViewController:self.alertController animated:YES completion:nil];
 

还尝试在 rootviewcontroller 上显示,但没有运气,相同的代码适用于 ios 8。项目很旧并且得到 iOS 5 的支持。任何帮助将不胜感激。谢谢。

【问题讨论】:

所以文本字段应该是垂直布局还是水平布局? 我刚试过你的代码。它工作正常。你在哪里调用这个方法 toggleLoginLdap ? 水平布局(下一个另一个),它也适用于我的新演示项目,但它不适用于我的旧项目(它是在以前版本的 xcode 中创建的)。 toggleLoginLdap 从另一个 viewController 调用。 请张贴方法,您在哪里调用它。也许你应该在主线程上调用它!!! 【参考方案1】:

在呈现 alertController 后添加 [self.alertController.view layoutIfNeeded] 我遇到了同样的问题,它成功了

【讨论】:

【参考方案2】:

我知道这个问题很老,但我已经研究了一天多。

我偶然发现了 Pixate freestyle github 中的一个线程。 我的问题是我们使用的是 Pixate Freestyle pod

如果你把你的代码放到一个干净的 Xcode 项目中,它看起来会很好。那里提到了一种解决方法;但它很快。我会尝试找到它并在我找到它时发布一个链接。

编辑:https://github.com/Pixate/pixate-freestyle-ios/issues/178

【讨论】:

以上是关于UIAlertController 在 iOS 9 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertController简单使用

UIAlertView 和 UIAlertController

UIAlertController 不会立即显示

我有错误:“UIAlertController”没有可见界面

iOS UIAlertController

iOS核心笔记——UIAlertController