最初に、電子メールを送信するときにこのような機会に出会った解決策を探して、それは非常にうまく使用できる特定のコンポーネントUITextContentViewを使用し、そこからクリップボードから写真を貼り付け、好きなように編集します。 これらの写真をプログラムに戻す際に問題が発生しました。文書化されていないメソッドcontentAsHTMLStringがHTML形式のコンテンツを返しましたが、画像へのリンクはwebkit-fake-urlの形式であり、このタイプの手でリンクは取得されませんでした。
問題に対する解決策を共有したい(ユーザーのおかげで
![[情報]](https://habrastorage.org/getpro/habr/post_images/d1b/c9e/d25/d1bc9ed25741859f42b8f4616d5ce567.gif)
次のように実装されます:UIScrollViewはルートにあり、UITextViewがルートに追加されます(この例ではMyTextView-フィールド内のスクロール機能は無効です)。画像を挿入すると、UIImageViewは現在選択されているテキストフィールドの下に追加され、さらに下には別のMyTextViewがあります。 したがって、画像の前後のテキストを編集できます。
ユーザーがテキストフィールドのゼロの位置にいるときにBackspaceキーを押すと、個別に処理されます。これにより画像が削除され、2つのテキストフィールド(画像の前後)が1つに接着されます。
ユーザーが入力したテキストを取得するには、次のメソッドが使用されます。
NSString *text = textView.text;
* This source code was highlighted with Source Code Highlighter .
テキスト内の画像は、[img1]、[img2] ...の形式の行に置き換えられます。ここで、番号は配列内の(画像番号+ 1)です。
NSArray *images = [textView getImages];
* This source code was highlighted with Source Code Highlighter .
記事を編集するときは、逆の操作が必要です-写真を含むテキストをコンポーネントに挿入して、さらに編集します。
この部分は、ニーズに合わせて「完成」する必要があります。 私の場合、すべての画像タグは<img src = "/ images / ..." width = "300">の形式でしたので、単純に-このようなタグをすべて[["image url"]]に置き換えてメソッドを実装しました
[textView setText:parsedText baseUrl:[NSURL URLWithString: @"http://www.site.ru/" ]];
* This source code was highlighted with Source Code Highlighter .
コンポーネントを使用するには、4つのファイル(この例ではUITextViewWithImagesグループにあります)をプロジェクトにコピーし、Interface BuilderでUIScrollViewビューに追加し、「Identity Inspector」で「Class」を「UITextViewWithImages」に変更します
この例では、基本的な機能が実装されていますが、欠点はすでに入力された行の間にテキストフィールドの「内側」に画像を挿入できないことです。
実際にはソース付きの例へのリンク自体