2016-10-03 15 views
3

メモ(テキストと写真)の一般的な内容を共有する方法はすでにわかっています。しかし、私が現在問題に近づいているところでは、メモのマークアップは保持されません(タイトル、リストなど)。私はちょうどノートの純粋なテキストを受け取る。たとえばMailとメモを共有すると、マークアップが転送されていることがわかります。あなた自身のアプリのためにそれを行う方法はありますか?私は純粋なテキストを受け取る共有機能を含むマークアップを含むメモの共有方法Swift

私の現在のソリューションは:

class ShareViewController: UIViewController{ 

    override func viewDidLoad() { 

     if let content = extensionContext!.inputItems[0] as? NSExtensionItem { 

      // Verify the provider is valid 
      if let contents = content.attachments as? [NSItemProvider] { 

       // look for images 
       for attachment in contents { 
        print(attachment.registeredTypeIdentifiers) 


        if attachment.hasItemConformingToTypeIdentifier("public.plain-text"){ 
         attachment.loadItem(forTypeIdentifier: "public.plain-text", options: nil) { data, error in 

          let string = data as! String 
          print(string) 
         } 
        } 
       } 
      } 
     } 
    } 
} 

EDIT:

私の現在のNSExtensionActivationRules

<key>NSExtensionAttributes</key> 
    <dict> 
     <key>NSExtensionActivationRule</key> 
     <dict> 
      <key>NSExtensionActivationDictionaryVersion</key> 
      <integer>2</integer> 
      <key>NSExtensionActivationSupportsImageWithMaxCount</key> 
      <integer>100</integer> 
      <key>NSExtensionActivationSupportsText</key> 
      <true/> 
     </dict> 
    </dict> 
+0

NSExtensionActivationRule(Info.plist)をあなたの質問に追加できますか? –

+0

@ d.felber 'NSExtensionActivationRules'を追加しました – Christoph

答えて

1

はあなたNSExtensionItem(コンテンツのattributedContentTextプロパティを使用します):

override func viewDidLoad() { 
    if let content = extensionContext!.inputItems[0] as? NSExtensionItem { 
     // move your content validation to `func isContentValid() -> Bool` 

     let attributedString = content.attributedContentText // yay NSAttributedString! 
    } 
} 
+0

あなたが言ったことは素晴らしいですが、それは動作しますが、私が探している属性はコピーされていないようです。 font-familyとfont-sizeは保持されますが、他の書式設定は使用できないようです(リストとインデント、ヘッダーなど)。私は 'attributedString'をHTML文書とrtfファイルに変換しようとしましたが、これはそれらの属性を適用しないようです。何か案は? – Christoph

+0

@Christoph申し訳ありません。属性が 'attributedContentText'によって提供されない場合、私はそれらの情報にアクセスする方法がないことを恐れています。 –

+0

さて、それのようです。私が奇妙なことを見つけたのは、メールでメモを共有すると、それらの属性を保持することができますが、これは開発者がアクセスできないリンゴ内部のようです。次の数日間に他の回答がなければ、私はあなたに賞金をあげます。助けてくれてありがとう。 :) – Christoph

関連する問題