How to set a mail Subject in UIActivityViewController?

前端 未结 4 1226
终归单人心
终归单人心 2020-12-08 13:04

I want to set subject for email sharing in UIActivityViewController and also want to share in Twitter. I know in Twitter if we want to share — we need compress

相关标签:
4条回答
  • 2020-12-08 13:30

    Check below code for the email for setting up your email subject:

    UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"Your String to share"]
                                      applicationActivities:nil];
    [avc setValue:@"Your email Subject" forKey:@"subject"];
    
    avc.completionHandler = ^(NSString *activityType, BOOL completed) {
        // ...
    };
    

    Here the line

    [avc setValue:@"Your email Subject" forKey:@"subject"];

    Makes the subject as "Your email Subject" if user picks email option in the UIActivityViewController.

    I hope it helps...

    0 讨论(0)
  • 2020-12-08 13:30

    Here's a concrete solution for Swift 3.0+ based on the accepted answer. Note that, like the accepted answer, this is known to work only on the iOS Mail app and not necessarily other apps.

    Implementation:

    class MessageWithSubject: NSObject, UIActivityItemSource {
    
        let subject:String
        let message:String
    
        init(subject: String, message: String) {
            self.subject = subject
            self.message = message
    
            super.init()
        }
    
        func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
            return message
        }
    
        func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
            return message
        }
    
        func activityViewController(_ activityViewController: UIActivityViewController,
                                    subjectForActivityType activityType: UIActivityType?) -> String {
            return subject
        }
    }
    

    Usage:

    Here's an example of usage. Note that it works well to use this as the first item in the activityItems array, and include any additional items to follow:

    let message = MessageWithSubject(subject: "Here is the subject", message: "An introductory message")
    let itemsToShare:[Any] = [ message, image, url, etc ]
    
    let controller = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil)
    
    0 讨论(0)
  • 2020-12-08 13:31

    For Swift 2.0+ & ios 8.0+

    let title = "Title of the post"
    let content = "Content of the post"
    let objectsToShare = [title, content]
    
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)      
    activityVC.setValue(title, forKey: "Subject")
    self.presentViewController(activityVC, animated: true, completion: nil)
    
    0 讨论(0)
  • 2020-12-08 13:36

    It seems as though emreoktem's solution—sending setValue:forKey: to the UIActivityViewController—is undocumented.

    On iOS 7 and later, you can implement the activityViewController:subjectForActivityType: method in an object conforming to the UIActivityItemSource protocol to do this in a way that is documented.

    0 讨论(0)
提交回复
热议问题