UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案
2015-01-26 00:06
513 查看
本文转载至 http://www.aichengxu.com/view/35326
UIAlertView及UIActionSheet在ios8中被放弃,其功能将完全由UIAlertController代替:
1.Alert用法
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"This is Title"
message:@"This is message"
preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"Action 1 (Default Style)"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
NSLog(@"Action 1 Handler Called");
}]];
[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(0, 0, 80, 30)];
}];
[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,可以正常运行了.
相关文章推荐
- UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案
- UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案
- UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案
- IOS开发问题解决之UIAlertView调用UIActionSheet后灰色背景一直存在
- UIAlertView和UIActionSheet的IOS8兼容
- UIAlertView、UIActionSheet兼容iOS8
- IOS开发问题解决之UIAlertView调用UIActionSheet后灰色背景一直存在
- UIAlertView、UIActionSheet兼容iOS8
- UIAlertView、UIActionSheet兼容iOS8
- IOS问题汇总:2012-12-18 UIAlertView+UIActionSheet
- uitableview中自适应的复杂cell构建思路(此方案兼容ios8以下,若仅支持ios8,有更先进的方案,请期待续篇)
- IE浏览器各版本与web标准不兼容问题解决方案
- IOS-49-UIActionSheet在iOS8后已废弃,以下为各版本通用适配办法
- 解决IOS8.1中UIActionSheet与UIPickerView不兼容
- 谈谈改变 UIAlertView 和 UIActionSheet 的颜色 iOS8及以上应该使用的方式
- iOS8以后UIAlertView和UIActionSheet两种alert页面都将通过UIAlertController来创建
- 正确的解决GridLayout在安卓4.0以下版本中兼容问题
- iOS8 UIAlertController 创建UIAlertView以及UIActionSheet
- 解决LikeButton不兼容23以下版本的问题
- UIActionSheet上添加UIPickerView iOS8替换方案