ios - 应用程序在 iOS 8 中运行良好,但在 iOS 7 中运行不正常

标签 ios objective-c cocoa-touch uiactivityviewcontroller

所以,在我的应用中,我想使用 UIActivityViewController 分享一些东西。

为确保分享事件成功,我有以下代码:

UIActivityViewController *controller =  [[UIActivityViewController alloc]
                                                     initWithActivityItems:@[text, shortURL, image]
                                                     applicationActivities:nil];
[controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
          if (! completed){
            // Here I do some stuff irrelevant to the question
        }
    }];

由于我已经复制(并修改)了这段代码,所以我不想声称我完全理解这里发生的事情。

确实知道的是,上面的代码在 iOS 8 上运行良好,但在 iOS 7、硬件或模拟器上运行不正常。

我非常希望有人能向我解释这里发生了什么。

最佳答案

completionWithItemsHandler属性在 iOS 7 中不可用,因为它是在 iOS 8 中引入的。

您正在寻找的是现已弃用的 completionHandler属性(property);如果你的部署目标低于 iOS 8,你可以只使用它,但如果你想面向 future ,你可以检查是否支持新的处理程序,如果不支持,则使用旧的处理程序:

if([[UIApplication sharedApplication] respondsToSelector:(@selector(setCompletionWithItemsHandler:))]){
        [controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
            if(!completed){
                // Out of scope of question
            }
        }];
    }else{
        [controller setCompletionHandler:^(NSString *activityType, BOOL completed) {
            if(!completed){
                // Out of scope of question
            }
        }];
    }
}

此外,为了简洁起见,您可能忽略了这一点,但重要的是在初始化 View Controller 后实际呈现它:

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

关于ios - 应用程序在 iOS 8 中运行良好,但在 iOS 7 中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077072/

相关文章:

iphone - 如何在动画 block 警告中删除不兼容的整数转换指针

iphone - 需要确认继承 UIAlertView 是合法的

objective-c - NSFetchedResultsController 不显示来自后台线程的更改

ios - 延迟加载 UI 元素/IBOutlets

ios - iPhone 5 中导航栏上方和页脚下方的黑条 ios

ios - 使用自动布局时更改 UIButton 的大小?

iphone - 带图像的 View 和表格 View 在手机上看起来与界面生成器上的看起来不一样

iphone - NSS线程标识符

ios - 按一个按钮它会发出声音。快速按下按钮,声音播放弹出和点击

ios - Swift:委托(delegate)/事件来自 C# 背景