zoukankan      html  css  js  c++  java
  • UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案

    本文转载至 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(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,可以正常运行了.
  • 相关阅读:
    临时表的问题
    List集合和Set集合互转
    mysql数据库事件
    mysql存储过程事务
    N皇后问题
    递归实现字符数组的全排列及组合
    判断一个序列是否为某二叉搜索树的后续遍历结果
    递归实现两个有序链表的合并
    递归实现字符串反转
    根据字节数截取字符串
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4249241.html
Copyright © 2011-2022 走看看