首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理UIActivityViewController "Cancel“按钮

如何处理UIActivityViewController "Cancel“按钮
EN

Stack Overflow用户
提问于 2014-09-08 22:42:01
回答 1查看 845关注 0票数 0

UIActivityViewController默认情况下会有一个“取消”按钮。当按钮被按下时,我如何调用一个方法?

我写了这段代码来分享音频文件。

代码语言:javascript
复制
NSURL* outURL;
UIActivityViewController *controller;

if (&UIActivityTypeAirDrop != NULL) {
    controller.excludedActivityTypes = @[UIActivityTypeAirDrop];

    for (int i=0;i<[arrayselecturls count];i++) {
        str_SongsselectName=[[arrayselecturls objectAtIndex:i] objectForKey:@"Song"];

        NSString* ext = [TSLibraryImport extensionForAssetURL:[[arrayselecturls objectAtIndex:i] objectForKey:@"SongURl"]];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        outURL = [[NSURL fileURLWithPath:[documentsDirectory stringByAppendingPathComponent:[[arrayselecturls objectAtIndex:i] objectForKey:@"Song"]]] URLByAppendingPathExtension:ext];

        NSString *str_selectfilename=[NSString stringWithFormat:@"%@.mp3",str_SongsselectName];
        //        NSURL *url = outURL;
        //        NSLog(@"url is %@",url);
        NSArray *objectsToShare = [NSArray arrayWithObjects:outURL,str_selectfilename, nil];
        //  objectsToShare = @[outURL];
        controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
        // Exclude all activities except AirDrop.
        NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                        UIActivityTypePostToWeibo,
                                        UIActivityTypeMessage, UIActivityTypeMail,
                                        UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                        UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                        UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                        UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
        controller.excludedActivityTypes = excludedActivities;
    }
    [self presentViewController:controller animated:YES completion:nil];

}
else{
    UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Your device has no Airdrop!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [Alert show];
}
EN

回答 1

Stack Overflow用户

发布于 2014-09-09 15:19:23

哦!我知道solution.This解决方案对我来说工作得很好。

代码语言:javascript
复制
-(IBAction)ActionArtsist_airdropClick:(id)sender{
    view_shareView.hidden=YES;
    borderImageView . hidden =YES;
    darkBg . hidden =YES;
    view_artistdarlView.hidden=YES;

    tblv_albumSongTableView.userInteractionEnabled=YES;
    Data = [NSData dataWithContentsOfURL: exportURL];
     UIActivityViewController *controller;

    if (&UIActivityTypeAirDrop != NULL) {
        controller.excludedActivityTypes = @[UIActivityTypeAirDrop];

    NSString *str_selectfilename;

    for (int i=0;i<[arr_atistsongsSelct count];i++) {
        str_songsSlelectName=[[arr_atistsongsSelct objectAtIndex:i] objectForKey:@"songsName"];

        NSString* ext = [TSLibraryImport extensionForAssetURL:[[arr_atistsongsSelct objectAtIndex:i] objectForKey:@"songsURl"]];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSURL* outURL = [[NSURL fileURLWithPath:[documentsDirectory stringByAppendingPathComponent:[[arr_atistsongsSelct objectAtIndex:i] objectForKey:@"songsName"]]] URLByAppendingPathExtension:ext];

        str_selectfilename=[NSString stringWithFormat:@"%@.mp3",str_songsSlelectName];

        NSArray *objectsToShare = [NSArray arrayWithObjects:outURL,str_selectfilename, nil];
       controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
        // Exclude all activities except AirDrop.
        NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                        UIActivityTypePostToWeibo,
                                        UIActivityTypeMessage, UIActivityTypeMail,
                                        UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                        UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                        UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                        UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
        controller.excludedActivityTypes = excludedActivities;
    }

这是处理函数。

代码语言:javascript
复制
        **[controller setCompletionHandler:^(NSString *activityType, BOOL completed) {
            if (!completed)
            {

                [MBProgressHUD showHUDAddedTo:self.view animated:YES];
                [[UIApplication sharedApplication] beginIgnoringInteractionEvents];
                [self performSelector:@selector(ActiviHideArtistSong) withObject:self afterDelay:4.0 ];

            }

            return;
        }];**

一直到这里

代码语言:javascript
复制
        [self presentViewController:controller animated:YES completion:nil];

}
    else{
        UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Your device has no Airdrop!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [warningAlert show];
    }
}

-(void)ActiviHideArtistSong{
    [self btnimageArtistSongscheck_lick:nil];

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25726906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档