欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)

发布时间:2025/6/15 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
本文转载至 http://blog.csdn.net/liuwuguigui/article/details/39494597 IOS8UIAlertViewUIActionSheet

iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了~但是也无所谓,有新东西不怕,学会使用了就行。接下来会探讨一下这些个新的Controller。

 

- (void)showOkayCancelAlert {NSString *title = NSLocalizedString(@"A Short Title Is Best", nil);NSString *message = NSLocalizedString(@"A message should be a short, complete sentence.", nil);NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil);NSString *otherButtonTitle = NSLocalizedString(@"OK", nil);UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];// Create the actions.UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {NSLog(@"The \"Okay/Cancel\" alert's cancel action occured.");}];UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {NSLog(@"The \"Okay/Cancel\" alert's other action occured.");}];// Add the actions.[alertController addAction:cancelAction];[alertController addAction:otherAction];[self presentViewController:alertController animated:YES completion:nil]; }

这是最普通的一个alertcontroller,一个取消按钮,一个确定按钮。

新的alertcontroller,其初始化方法也不一样了,按钮响应方法绑定使用了block方式,有利有弊。需要注意的是不要因为block导致了引用循环,记得使用__weak,尤其是使用到self。

上面的界面如下:

如果UIAlertAction *otherAction这种otherAction多几个的话,它会自动排列成如下:

另外,很多时候,我们需要在alertcontroller中添加一个输入框,例如输入密码:

这时候可以添加如下代码:

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {// 可以在这里对textfield进行定制,例如改变背景色textField.backgroundColor = [UIColor orangeColor];}];

而改变背景色会这样:

完整的密码输入:

- (void)showSecureTextEntryAlert {NSString *title = NSLocalizedString(@"A Short Title Is Best", nil);NSString *message = NSLocalizedString(@"A message should be a short, complete sentence.", nil);NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil);NSString *otherButtonTitle = NSLocalizedString(@"OK", nil);UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];// Add the text field for the secure text entry.[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {// Listen for changes to the text field's text so that we can toggle the current// action's enabled property based on whether the user has entered a sufficiently// secure entry.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];textField.secureTextEntry = YES;}];// Create the actions.UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {NSLog(@"The \"Secure Text Entry\" alert's cancel action occured.");// Stop listening for text changed notifications.[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:alertController.textFields.firstObject];}];UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {NSLog(@"The \"Secure Text Entry\" alert's other action occured.");// Stop listening for text changed notifications.[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:alertController.textFields.firstObject];}];// The text field initially has no text in the text field, so we'll disable it.otherAction.enabled = NO;// Hold onto the secure text alert action to toggle the enabled/disabled state when the text changed.self.secureTextAlertAction = otherAction;// Add the actions.[alertController addAction:cancelAction];[alertController addAction:otherAction];[self presentViewController:alertController animated:YES completion:nil]; }

注意四点:

1.添加通知,监听textfield内容的改变:

// Add the text field for the secure text entry.[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {// Listen for changes to the text field's text so that we can toggle the current// action's enabled property based on whether the user has entered a sufficiently// secure entry.[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];textField.secureTextEntry = YES;}];

2.初始化时候,禁用“ok”按钮:

otherAction.enabled = NO;

self.secureTextAlertAction = otherAction;//定义一个全局变量来存储

3.当输入超过5个字符时候,使self.secureTextAlertAction = YES:

- (void)handleTextFieldTextDidChangeNotification:(NSNotification *)notification {UITextField *textField = notification.object;// Enforce a minimum length of >= 5 characters for secure text alerts.self.secureTextAlertAction.enabled = textField.text.length >= 5; }

4.在“OK”action中去掉通知:

UIAlertAction *otherAction = [UIAlertAction actionWithTitle:otherButtonTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {NSLog(@"The \"Secure Text Entry\" alert's other action occured.");// Stop listening for text changed notifications.[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:alertController.textFields.firstObject];}];

 

最后是以前经常是alertview与actionsheet结合使用,这里同样也有:

- (void)showOkayCancelActionSheet {NSString *cancelButtonTitle = NSLocalizedString(@"Cancel", nil);NSString *destructiveButtonTitle = NSLocalizedString(@"OK", nil);UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];// Create the actions.UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {NSLog(@"The \"Okay/Cancel\" alert action sheet's cancel action occured.");}];UIAlertAction *destructiveAction = [UIAlertAction actionWithTitle:destructiveButtonTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {NSLog(@"The \"Okay/Cancel\" alert action sheet's destructive action occured.");}];// Add the actions.[alertController addAction:cancelAction];[alertController addAction:destructiveAction];[self presentViewController:alertController animated:YES completion:nil]; }

在底部显示如下:

 

好了,至此,基本就知道这个新的controller到底是怎样使用了。

总结

以上是生活随笔为你收集整理的iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。