2012-09-20 2 views
1

Ainsi, le code permettant de copier une partie de mon écran sur la table de montage fonctionne parce qu'il a été copié avec succès sur mon album photo. Mais, je veux être en mesure de coller la capture d'écran partielle dans un nouveau message SMS. Je sais que cela devra être fait manuellement (tenir longtemps sur le message et Coller), mais soit il ne collera rien, soit il n'aura pas l'option Coller (car il l'enregistre en tant que chaîne). La partie centrale du code est la partie avec laquelle je me bats. Toute aide est la bienvenue. J'ai changé le forPasteboardType en "image" mais cela ne fonctionne pas non plus.Copie de la capture d'écran partielle sur Pasteboard

//Capture part of Screen Shot 
     UIGraphicsBeginImageContext(self.view.bounds.size); 
     CGContextRef c = UIGraphicsGetCurrentContext(); 
     CGContextTranslateCTM(c, 0, 98); // 
     [self.view.layer renderInContext:c]; 
     UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

    //Send Screenshot to Pasteboard  
    UIPasteboard *pasteBoard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:YES]; 
    pasteBoard.persistent = YES; 
    NSData *data = UIImagePNGRepresentation(viewImage); 
    [pasteBoard setData:data forPasteboardType:(NSString *)kUTTypePNG];  

    /////// Open SMS 
    MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease]; 
    if([MFMessageComposeViewController canSendText]) 
    { 
     controller.body = @"Hello from me, paste image here -->"; 
     controller.recipients = [NSArray arrayWithObjects:@"123456789", nil]; 
     controller.messageComposeDelegate = self; 
     [self presentModalViewController:controller animated:YES]; 
    } 
    ////// End SMS 
} 
+0

Alors, je l'ai enlevé la partie médiane, déclarai "UIPasteboard * pasteboard;" dans mon fichier .h, Ajouté "pasteBoard = [UIPasteboard generalPasteboard];" dans mon ViewDidLoad, et enfin mettre "pasteBoard.image = viewImage;" pour envoyer l'image au tableau de données. Si j'ouvre un nouveau SMS manuellement, je peux coller l'image. Je travaille également dans un nouveau courriel. MAIS, quand j'essaye de le coller dans le SMS nouvellement créé dans mon application, cela ne fonctionnera pas? J'ai pensé que peut-être parce que j'avais du texte dans le corps, alors j'ai enlevé la ligne "controller.body" et je ne peux toujours pas. J'ai l'impression d'être proche! – user1467534

+0

OK, je l'ai eu à travailler en utilisant ce code pour simplement ouvrir l'application SMS native, NSString * stringURL = @ "sms:"; NSURL * url = [NSURL URLWithString: stringURL]; [[UIApplication sharedApplication] openURL: url]; – user1467534

+0

Je peux maintenant coller l'image dans l'application SMS native. Il montre encore une bordure blanche sur le dessus d'où je l'ai coupé. Des idées là-dessus? – user1467534

Répondre

1
//Capture part of Screen Shot 
UIGraphicsBeginImageContext(self.view.bounds.size); 
CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(c, 0, 98); // 
[self.view.layer renderInContext:c]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

//Send Screenshot to Pasteboard  
UIPasteboard *pasteBoard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:YES]; 
pasteBoard.persistent = YES; 
NSData *data = UIImagePNGRepresentation(viewImage); 
[pasteBoard setData:data forPasteboardType:(NSString *)kUTTypePNG];  

NSString *stringURL = @"sms:"; 
NSURL *url = [NSURL URLWithString:stringURL]; 
[[UIApplication sharedApplication] openURL:url]; 
+1

Lorsque j'ai ouvert le message texte, j'ai trouvé que l'image ne se trouvait pas à l'intérieur. Je suis sûr que l'image n'est pas nulle. – RainCast

Questions connexes