質問: attributedString ``` ↑self.testUiText.attributedTextに代入すると、キャレットが一番後ろに なってしまいます。 ``` func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool ``` や ``` func textViewDidChange(textView: UITextView) ``` で処理できるのでしょうか?
回答: `UITextView`のプロパティ`typingAttributes`が使えそうです。 **ViewController.swift** ``` import UIKit class ViewController: UIViewController { @IBOutlet weak var textView: UITextView! // 対象のText View // UIButtonではなくて、UIBarButtonItemを使いました。 @IBAction func changeTextColor(sender: UIBarButtonItem) { if sender.title == "Red" { textView.typingAttributes = [NSForegroundColorAttributeName: UIColor.redColor()] } else if sender.title == "Green" { textView.typingAttributes = [NSForegroundColorAttributeName: UIColor.greenColor()] } else { textView.typingAttributes = [NSForegroundColorAttributeName: UIColor.blueColor()] } } } ``` `tyoingAttributes`は、NSAttributedStringのAttributesとおなじ`Dictionary`です。 キーボード入力の文字の色が変化します。