gpt4 book ai didi

ios - UIActivityViewController 问题 iOS 7 和 iOS 8?

转载 作者:技术小花猫 更新时间:2023-10-29 11:11:43 27 4
gpt4 key购买 nike

我正在为 iPad 构建一个文章阅读应用程序。我集成了社交分享功能,这意味着用户可以在 Facebook 和谷歌邮件上分享文章。我正在使用 UIActivityViewController 进行分享。

有一个条形按钮项,当用户单击该 UIActivityViewController 打开时。我更新了 Xcode 6当我在模拟器上运行时它运行良好但我在带有 iOS 7 的真实设备 (iPad) 上运行时,应用程序在单击栏按钮项目时崩溃。 这是我的代码:

     - (IBAction)ysshareAction:(id)sender
{

NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc] initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
[stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0, stringText.length)];
NSArray * itemsArray = @[[NSString stringWithFormat:@"%@",_DetailModal1[0]], [NSURL URLWithString:_DetailModal1[4]]];
NSArray * applicationActivities = nil;
UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];
AVC.popoverPresentationController.sourceView = _webView;
[self presentViewController:AVC animated:YES completion:nil];
[AVC setCompletionHandler:^(NSString *act, BOOL done)
{

if([act isEqualToString:UIActivityTypeMail]) {
ServiceMsg = @"Mail sent!";
} else if([act isEqualToString:UIActivityTypePostToTwitter]) {
ServiceMsg = @"Article Shared!";
} else if([act isEqualToString:UIActivityTypePostToFacebook]) {
ServiceMsg = @"Article Shared!";
} else if([act isEqualToString:UIActivityTypeMessage]) {
ServiceMsg = @"SMS sent!";
} else if([act isEqualToString:UIActivityTypeAddToReadingList]) {
ServiceMsg = @"Added to Reading List";
} else if([act isEqualToString:UIActivityTypeCopyToPasteboard]){
ServiceMsg = @"Copied Link";
}

if ( done )
{
UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[Alert show];

}
}];

}

感谢您的帮助!

最佳答案

下一行是问题所在

AVC.popoverPresentationController.sourceView = _webView;

您必须按顺序放置 iOS8 条件 popoverPresentationController 是为 iOS 8 及更高版本引入的,因此您不能在 iOS 7 中使用它

为了检查 iOS8,您可以定义一个宏,如从 here 中找到的那样

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

并按以下方式使用它。

     NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc] initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
[stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0, stringText.length)];
NSArray * itemsArray = @[[NSString stringWithFormat:@"%@",_DetailModal1[0]], [NSURL URLWithString:_DetailModal1[4]]];
NSArray * applicationActivities = nil;
UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")){

AVC.popoverPresentationController.sourceView = _webView;
}
[self presentViewController:AVC animated:YES completion:nil];

引用this有关 iOS8 中 UIActivityViewController 更改内容的更多信息

关于ios - UIActivityViewController 问题 iOS 7 和 iOS 8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com