質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1316閲覧

textViewに2つ以上の画像をフォトライブラリから貼り付けたい

Daisuke0315

総合スコア23

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/05/14 10:47

困っていること

textViewにフォトライブラリから画像をはりつけると画像が上書きされてしまう

#該当コード

swift

1 2 3import UIKit 4 5class testViewController: UIViewController,UIImagePickerControllerDelegate,UITextFieldDelegate, UINavigationControllerDelegate { 6 7 8 @IBOutlet weak var shousaiTextView: UITextView! 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 } 12 13 //MARK:-画像を貼るボタン 14 var picker: UIImagePickerController! = UIImagePickerController() 15 @IBAction func gazou(_ sender: Any) { 16 //PhotoLibraryから画像を選択 17 picker.sourceType = UIImagePickerController.SourceType.photoLibrary 18 //デリゲートを設定する 19 picker.delegate = self 20 //現れるピッカーNavigationBarの文字色を設定する 21 picker.navigationBar.tintColor = UIColor.white 22 //現れるピッカーNavigationBarの背景色を設定する 23 picker.navigationBar.barTintColor = UIColor.gray 24 //ピッカーを表示する 25 present(picker, animated: true, completion: nil) 26 } 27 //MARK:-メモに画像を貼り付ける処理 28 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 29 if let image = info[.originalImage] as? UIImage { 30 31 let fullString = NSMutableAttributedString(string: shousaiTextView.text) 32 33 let imageWidth = image.size.width 34 // 画像の幅を調整したい場合paddingなどをframeから引く 35 let padding: CGFloat = 16 36 let scaleFactor = imageWidth / (shousaiTextView.frame.size.width - padding) 37 let imageAttachment = NSTextAttachment() 38 imageAttachment.image = UIImage(cgImage: image.cgImage!, scale: scaleFactor, orientation: .up) 39 let imageString = NSAttributedString(attachment: imageAttachment) 40 fullString.append(imageString) 41 // TextViewに画像を含んだテキストをセット 42 shousaiTextView.attributedText = fullString 43 } 44 dismiss(animated: true, completion: nil) 45 } 46} 47

#試したこと
https://teratail.com/questions/213275
上記のhpより、一枚一枚の写真にタグ付けするのかと思ったのですが全くやり方の見当がつきませんでした。

ヒントだけでも教えて頂ければ嬉しいです。宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/05/14 12:24

let fullString = NSMutableAttributedString(string: shousaiTextView.text) を let fullString = shousaiTextView.attributedText に変えたらいいかも。
Daisuke0315

2020/05/14 12:59

お返事ありがとうございます。 やってみたのですがミュータブルじゃなくなくなることになって書き換え可能クラスではなくなり、そのあとの fullString.append(imageString) で、メソッドが使えなくなるエラーメッセージが表示されました。
hoshi-takanori

2020/05/14 13:16

let fullString = NSMutableAttributedString(attributedString: shousaiTextView.attributedText) の間違いです。失礼しました。(Objective-C のお作法を忘れてました…。)
Daisuke0315

2020/05/14 13:30

え、できました。。 なぜ出来なかったのかヒントだけでも教えてほしいです!
Daisuke0315

2020/05/14 13:40

すみません、考えてみると、文字情報じゃなくて装飾された文字情報を入れ直さないとだめ、ということですね。。。勉強になりました
guest

回答1

0

自己解決

swift

1let fullString = NSMutableAttributedString(attributedString: shousaiTextView.text) 2//下のに変えると意図通り動かすことが出来ました 3 4let fullString = NSMutableAttributedString(attributedString: shousaiTextView.attributedText)

ありがとうございました。

投稿2020/05/14 13:32

Daisuke0315

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問