Ios 如何与我的应用程序共享所选文本?
我想让我的应用程序出现在UIActivityViewController中进行文本共享,如邮件、iMessage、Notes、Gmail等 例如,当用户点击所选文本并从附件中的任何应用程序点击“共享”按钮时: 我希望我的应用程序出现在UIActivityViewController中,当用户选择我的应用程序时,启动它并能够处理所选文本 所以我试过: 在苹果文档中搜索Ios 如何与我的应用程序共享所选文本?,ios,objective-c,mobile,share,Ios,Objective C,Mobile,Share,我想让我的应用程序出现在UIActivityViewController中进行文本共享,如邮件、iMessage、Notes、Gmail等 例如,当用户点击所选文本并从附件中的任何应用程序点击“共享”按钮时: 我希望我的应用程序出现在UIActivityViewController中,当用户选择我的应用程序时,启动它并能够处理所选文本 所以我试过: 在苹果文档中搜索 搜索相关的UTI,但我知道UTI仅用于文件,而不用于简单的NSString(如果我错了,请纠正我) 我已经尝试过实现共享扩展,
- 搜索相关的UTI,但我知道UTI仅用于文件,而不用于简单的NSString(如果我错了,请纠正我)
- 我已经尝试过实现共享扩展,但这不是我想要的解决方案,我不需要post弹出窗口,而且我需要在共享后启动我的应用程序,就像在Mail、Notes、iMessage中一样(关于苹果文档,我们不能通过共享扩展只通过今天的扩展启动包含应用程序)
- 当然,我在StackOverFlow中搜索了很多
谢谢 假设您已经有了一些应用程序
@IBOutlet
弱var绑定到它String
更改为Dictionary
。展开词典后,单击词典旁边的+按钮。这将添加一个子密钥。将其名称设置为NSExtensionActivationSupportsText,将其类型设置为Boolean
,并将值设置为YES。这确保了操作扩展仅在至少一个输入项包含文本时可见你可以关注或感谢,但你所附的链接并不能回答我的问题。我不知道如何使我的应用程序出现在UIActivityViewController中,以防共享原始帖子中所述的选定文本。我知道如何使用UTI,我成功地与PDF、JPG、TXT等共享。我只共享文本没有成功(选择特定文本并点击上面的共享按钮),如果你知道如何处理该问题,那将是非常棒的!谢谢。@NikhleshBagdiya你有什么解决办法吗?谢谢
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)
}
}