3

私はNSAttributedString3つの異なるものを含むことができる を持っています:

  • ただのイメージ。(付属物)
  • テキストのみ
  • 画像の後にテキストが続きます (/!\ その逆ではありません)。

そのオブジェクトを「スキャン」して、画像またはテキストがあるかどうか、画像がある場合は後でテキストがあるかどうかを確認しようとしています。

enumeration パラメータと range パラメータの使用に慣れていません。ドキュメントは、これを機能させる方法を理解するのに本当に役立ちませんでした。

どのようにこれを達成しますか?

  • 画像があれば抽出する
  • 文字列がある場合は抽出します (単独または画像の後に)。

私が今持っている唯一のコードは、画像しかない場合に役立つ別の SO 投稿からのものです。

 NSAttributedString *currentString = self.inputToolbar.contentView.textView.attributedText;
 __block UIImage *currentImage = nil;    
    [currentString enumerateAttribute:NSAttachmentAttributeName
                                 inRange:NSMakeRange(0, [currentString length])
                                 options:0
                              usingBlock:^(id value, NSRange range, BOOL *stop)
                              {
                                  if ([value isKindOfClass:[NSTextAttachment class]])
                                  {
                                      NSTextAttachment *attachment = (NSTextAttachment *)value;
                                      UIImage *image = nil;
                                      if ([attachment image])
                                          image = [attachment image];
                                      else
                                          image = [attachment imageForBounds:[attachment bounds]
                                                               textContainer:nil
                                                              characterIndex:range.location];

                                      if (image)
                                          currentImage = image;
                                  }
                              }];
4

1 に答える 1