2013-08-09 3 views
3

Я пытаюсь прикрепить скриншот к моей почте в своем UIActivityViewController без сохранения снимка в моей библиотеке. Вот мой код:Настройка UIActivityViewController

-(IBAction)ActivityController:(id)sender {{ 



    NSString *shareString = @""; 
    UIImage *shareImage = [UIImage imageNamed:@""]; 


    NSURL *shareUrl = [NSURL URLWithString:@""]; 
    NSArray *activityItems = [NSArray arrayWithObjects:shareString,shareImage, shareUrl, nil]; 
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentViewController:activityViewController animated:YES completion:nil]; 

    MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; 

    mailController.mailComposeDelegate = self; 
    UIGraphicsBeginImageContext(self.view.bounds.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *exportData = UIImageJPEGRepresentation(image ,1.0); 
    [mailController addAttachmentData:exportData mimeType:@"image/jpeg" fileName:@"Screenshot.jpeg"]; 

Скриншот прилагается к письму.

И как мне создать действие, когда я нажимаю кнопку отмены в UIActivityViewcontroller?

ответ

2

UIActivityViewController поможет вам легко обмениваться данными с iOS6. Просто позвоните, введите данные и нажмите, какой из них вы хотите разделить. Не запускайте MFMailComposeViewController.

Это пример общего кода, работающего в IPad и iPhone

-(IBAction)actionButton:(id)sender { 
    //Popover for iPad 
    //if (self.popover) { 
    // if ([self.popover isPopoverVisible]) { 
     //  return; 
     // } else { 
     //  [self.popover dismissPopoverAnimated:YES]; 
     //  self.popover = nil; 
     // } 
    // } 

    UIGraphicsBeginImageContext(self.view.bounds.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSString *shareText = @"Share Text"; 
    NSURL *shareURL = [NSURL URLWithString:@"http://shareURL.com"]; 

    /* iOS 6 sharing, */ 
    UIActivity *activity = [[UIActivity alloc] init]; 

    NSArray *activityItems = @[image, shareText, shareURL]; 
    NSArray *applicationActivities = @[activity]; 
    NSArray *excludeActivities = @[]; 

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities]; 
    activityController.excludedActivityTypes = excludeActivities; 

    // switch for iPhone and iPad. 
    // if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
    // self.popover = [[UIPopoverController alloc] initWithContentViewController:activityController]; 
     // self.popover.delegate = self; 
     // [self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    // } else { 
     [self presentViewController:activityController animated:YES completion:^{ 
      NSLog(@"Activity complete"); 
     }]; 
    // } 


} 

EDIT Если вы хотите знать, когда Отмена нажатия кнопок, нужно изменить немного в presentViewController

[self presentViewController:activityController animated:YES completion:nil]; 
    [activityController setCompletionHandler:^(NSString *act, BOOL done) 
    { 
     if (!act) { 
      NSLog(@"Cancel"); 
     } 
    }]; 
+0

I 'm получение eroror "свойство popover не найдено – user2667306

+0

Этот код используется для Universal App, удаляет код Popover для iPad –

+0

Мне нужно только создать для Iphone – user2667306

Смежные вопросы