困っていること
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より、一枚一枚の写真にタグ付けするのかと思ったのですが全くやり方の見当がつきませんでした。
ヒントだけでも教えて頂ければ嬉しいです。宜しくお願いします。
let fullString = NSMutableAttributedString(string: shousaiTextView.text)
を
let fullString = shousaiTextView.attributedText
に変えたらいいかも。
お返事ありがとうございます。
やってみたのですがミュータブルじゃなくなくなることになって書き換え可能クラスではなくなり、そのあとの
fullString.append(imageString)
で、メソッドが使えなくなるエラーメッセージが表示されました。
let fullString = NSMutableAttributedString(attributedString: shousaiTextView.attributedText)
の間違いです。失礼しました。(Objective-C のお作法を忘れてました…。)
え、できました。。
なぜ出来なかったのかヒントだけでも教えてほしいです!
すみません、考えてみると、文字情報じゃなくて装飾された文字情報を入れ直さないとだめ、ということですね。。。勉強になりました
回答1件
あなたの回答
tips
プレビュー