我想让我的应用程序出现在UIActivityViewController中以进行文本共享,例如Mail,iMessage,Notes,Gmail等等。
例如,当用户点击所选文字并点击附件中的任何应用中的“分享”按钮时:
我希望我的应用程序出现在UIActivityViewController中,当用户选择我的应用程序时,启动它可以处理所选文本。
所以我尝试过: 在Apple文档中搜索。
那么任何解决方案? 谢谢!
答案 0 :(得分:1)
假设您已经有一些应用。
@IBOutlet
弱变量。String
更改为Dictionary
。展开字典后,单击其旁边的+按钮。这将添加一个子密钥。将其名称设置为 NSExtensionActivationSupportsText ,将其类型设置为Boolean
,并将值设置为 YES 。这样可以确保仅在至少一个输入项包含文本时才显示操作扩展。_
import UIKit
import MobileCoreServices
class ActionViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
// Get the item[s] we're handling from the extension context.
var textFound = false
for item in self.extensionContext!.inputItems as! [NSExtensionItem] {
for provider in item.attachments! {
if provider.hasItemConformingToTypeIdentifier(kUTTypePlainText as String) {
// This is an plain Text.
weak var weakTextView = self.textView
provider.loadItem(forTypeIdentifier: kUTTypePlainText as String, options: nil, completionHandler: { (textItem, error) in
OperationQueue.main.addOperation {
if let strongTextView = weakTextView {
if let gotText = textItem as? String {
strongTextView.text = gotText
// do what you need with the text
}
}
}
})
textFound = true
break
}
}
if (textFound) {
// We only handle one text, so stop looking for more. You can do as you need.
break
}
}
}
@IBAction func done() {
// Return any edited content to the host app.
// This template doesn't do anything, so we just echo the passed in items.
self.extensionContext!.completeRequest(returningItems: self.extensionContext!.inputItems, completionHandler: nil)
}
}