我這里需要的功能是菜單長按點擊共享,彈出UIActivityViewController,選中我的APP,把選中的文字保存到后臺。
代碼如下
NSString *Content=NSLocalizedString(@"在任何地方長按選中文字后點擊“共享”,就可以收藏你選中的句子到XX,隨時可會看想法", nil);
? ? NSString *string=[Content substringWithRange:self.contentLa1.selectedRange];
? ? NSArray*urls=@[string];
? ? self.contentLa1.selectedRange=NSMakeRange(0, 0);
?? //創(chuàng)建分享的類型,注意這里沒有常見的微信,朋友圈以QQ等,但是羅列完后,實際運行是相應(yīng)按鈕的,所以可以運行.
? ? UIActivityViewController *activituVC=[[UIActivityViewController alloc]initWithActivityItems:urls applicationActivities:nil];
? ? //顯示分享窗口
? ? if([activituVCrespondsToSelector:@selector(popoverPresentationController)]) {
? ? ? ? activituVC.popoverPresentationController.sourceView = self.view;
? ? }
? ? if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {//iPad
? ? ? ? UIBarButtonItem *shareBarButtonItem = self.navigationItem.leftBarButtonItem;
? ? ? ? UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activituVC];
? ? ? ? [popuppresentPopoverFromBarButtonItem:shareBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
? ? }else{
?? ? ? [self.navigationController presentViewController:activituVC animated:YES completion:nil];
? ? }
? ? //初始化Block回調(diào)方法,此回調(diào)方法是在iOS8之后出的,代替了之前的方法
? ? UIActivityViewControllerCompletionWithItemsHandlermyBlock = ^(NSString*activityType,BOOLcompleted,NSArray*returnedItems,NSError*activityError)
? ? {
? ? ? ? NSLog(@"activityType :%@", activityType);
? ? ? ? if(completed)
? ? ? ? {
? ? ? ? ? ? if([activityTypeisEqualToString:@"com.Moutains.Copy.Copy"]) {
?? ? ? ? ? ? ? self.mainView2.hidden=NO;
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? self.mainView2.hidden=YES;
? ? ? ? ? ? ? ? self.mainView1.hidden=YES;
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? self.mainView2.hidden=YES;
? ? ? ? ? ? self.mainView1.hidden=YES;
? ? ? ? }
? ? };
? ? // 初始化completionHandler,當post結(jié)束之后(無論是done還是cancell)該blog都會被調(diào)用
? ? activituVC.completionWithItemsHandler = myBlock;
這里要注意的是:iPad設(shè)備中的UIActivityViewController一定要通過UIPopoverController彈起,不然會崩潰
判斷設(shè)備是否是iPad
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {//iPad
? ? ? ? UIBarButtonItem *shareBarButtonItem = self.navigationItem.leftBarButtonItem;
? ? ? ? UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activituVC];
? ? ? ? [popuppresentPopoverFromBarButtonItem:shareBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
? ? }else{
?? ? ? [self.navigationController presentViewController:activituVC animated:YES completion:nil];
? ? }