写真付きのUITextView

最近、写真をテキスト内にランダムに配置して、iPhoneから記事を追加する機能をユーザーに提供する必要がありました。 残念ながら、sdkはそのような機能を提供しないため、ホイールを再発明する必要がありました。



最初に、電子メールを送信するときにこのような機会に出会った解決策を探して、それは非常にうまく使用できる特定のコンポーネントUITextContentViewを使用し、そこからクリップボードから写真を貼り付け、好きなように編集します。 これらの写真をプログラムに戻す際に問題が発生しました。文書化されていないメソッドcontentAsHTMLStringがHTML形式のコンテンツを返しましたが、画像へのリンクはwebkit-fake-urlの形式であり、このタイプの手でリンクは取得されませんでした。



問題に対する解決策を共有したい(ユーザーのおかげで [情報] 実装に関するアドバイスについてはigrick



次のように実装されます: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」に変更します



この例では、基本的な機能が実装されていますが、欠点はすでに入力された行の間にテキストフィールドの「内側」に画像を挿入できないことです。



実際にはソース付きへのリンク自体



All Articles