UIAlertView及UIActionSheet 在ios8极其如下版本的兼容问题解决方案

本文转载至 http://www.aichengxu.com/view/35326

 

 

UIAlertView及UIActionSheet在ios8中被放弃,其功能将彻底由UIAlertController代替:php

 

1.Alert用法ios

UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"This is Title"xcode

message:@"This is message"框架

preferredStyle:UIAlertControllerStyleAlert];ui

[alert addAction:[UIAlertAction actionWithTitle:@"Action 1 (Default Style)"url

style:UIAlertActionStyleDefaultspa

handler:^(UIAlertAction *action) {code

NSLog(@"Action 1 Handler Called");get

}]];it

 

[alert addAction:[UIAlertAction actionWithTitle:@"Action 2 (Cancel Style)"

style:UIAlertActionStyleCancel

handler:^(UIAlertAction *action) {

NSLog(@"Action 2 Handler Called");

}]];

 

[alert addAction:[UIAlertAction actionWithTitle:@"Action 3 (Destructive Style)"

style:UIAlertActionStyleDestructive

handler:^(UIAlertAction *action) {

NSLog(@"Action 3 Handler Called");

}]];

 

[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {

 

UITextField * tf = [[UITextField alloc]initWithFrame:CGRectMake(008030)];

}];

[self presentViewController:alert animated:YES completion:nil];

2,actionsheet用法

 

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nilpreferredStyle:UIAlertControllerStyleActionSheet];

 

[alertController addAction:[UIAlertAction actionWithTitle:@"111"

style:UIAlertActionStyleDefault

handler:^(UIAlertAction *action) {

NSLog(@"111");

}]];

[alertController addAction:[UIAlertAction actionWithTitle:@"222"

style:UIAlertActionStyleCancel

handler:^(UIAlertAction *action) {

NSLog(@"222");

}]];

 

[self presentViewController:alertController animated:YES completion:nil];

 

版本判断语句

#define iOS(version) (([[[UIDevice currentDevice] systemVersion] intValue] >= version)?1:0)

可进行判断添加alertController或是aletView和actionsheet

 

3.新的问题,当在ios8下作好判断以后,返回ios7或ios6运行xcode,报错-------

缘由:UIAlertController只在ios8下的框架里由此文件,ios7及如下版本没有,但编译的时候仍是会进行编译(虽然运行时不走这部分代码)

解决方法:编译时进行判断,只有在ios8SDK下编译此部分

 

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000

 

"alertcontroller相关代码"

#endif

从新运行xcode,ok,能够正常运行了.
相关文章
相关标签/搜索