program story

UIActivityViewController에서 메일 제목을 설정하는 방법은 무엇입니까?

inputbox 2020. 11. 19. 08:09
반응형

UIActivityViewController에서 메일 제목을 설정하는 방법은 무엇입니까?


이메일 공유 제목을 설정 UIActivityViewController하고 Twitter에서도 공유하고 싶습니다. 공유하려면 Twitter에서 알고 있습니다. 텍스트를 140 자로 압축해야합니다. 많은 SO 솔루션을 확인했지만 아무것도 작동하지 않습니다.

이 문제가 최신 iOS 릴리스에서 해결 되었습니까? 다른 "작동하는 솔루션"이 있습니까?


emreoktem의 솔루션 (에 보내기) setValue:forKey:UIActivityViewController문서화되지 않은 것 같습니다 .

iOS 7 이상 activityViewController:subjectForActivityType:에서는 UIActivityItemSource프로토콜을 준수하는 객체 에서 메서드를 구현하여 문서화 된 방식으로이를 수행 할 수 있습니다.


이메일 제목 설정을위한 이메일 코드를 아래에서 확인하세요.

UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivityItems:@[@"Your String to share"]
                                  applicationActivities:nil];
[avc setValue:@"Your email Subject" forKey:@"subject"];

avc.completionHandler = ^(NSString *activityType, BOOL completed) {
    // ...
};

여기 라인

[avc setValue : @ "귀하의 이메일 제목"forKey : @ "subject"];

사용자가 UIActivityViewController에서 이메일 옵션을 선택하면 제목을 "Your email Subject"로 만듭니다.

도움이 되었으면합니다 ...


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)

다음 은 수락 된 답변을 기반으로 한 Swift 3.0+에 대한 구체적인 솔루션입니다 . 허용되는 답변과 마찬가지로 이것은 iOS 메일 앱에서만 작동하며 반드시 다른 앱에서는 작동하지 않는 것으로 알려져 있습니다.

이행:

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
    }
}

용법:

다음은 사용 예입니다. 이 항목을 activityItems 배열의 첫 번째 항목으로 사용하고 따라야 할 추가 항목을 포함하는 것이 좋습니다.

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)

참고 URL : https://stackoverflow.com/questions/17020288/how-to-set-a-mail-subject-in-uiactivityviewcontroller

반응형