I have this share sheet code and I am trying to figure out how to edit "Plain Text".
You may use UIActivityItemSource
with LPLinkMetadata
.
Prepare a class inheriting UIActivityItemSource
somewhere in your project:
import LinkPresentation
class MyActivityItemSource: NSObject, UIActivityItemSource {
var title: String
var text: String
init(title: String, text: String) {
self.title = title
self.text = text
super.init()
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return text
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return text
}
func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return title
}
func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? {
let metadata = LPLinkMetadata()
metadata.title = title
metadata.iconProvider = NSItemProvider(object: UIImage(systemName: "text.bubble")!)
//This is a bit ugly, though I could not find other ways to show text content below title.
//https://stackoverflow.com/questions/60563773/ios-13-share-sheet-changing-subtitle-item-description
//You may need to escape some special characters like "/".
metadata.originalURL = URL(fileURLWithPath: text)
return metadata
}
}
And use it like this:
let title = "Jokes Are Us Diagnostics:"
let text = "Some Text"
// set up activity view controller
let textToShare: [Any] = [
MyActivityItemSource(title: title, text: text)
]
let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
As far as I tried, this may not produce the expected result if you add other items into textToShare
.