NSTextStorageとUITextVIewを使ってWordのような機能を導入したい

投稿者: Anonymous

UITextViewでユーザーが文字を入力し、色変更ボタンを押すと、次の入力文字から色変更が適用される仕組みにしたいです。(今までのテキストは今までの属性を保ったまま)

しかし、どうしても全てのテキストに属性が適応されてしまったりうまくいきません。
解決法を教えていただけるとありがたいです。

流れ例

  1. ユーザー入力 “あい” 色: 黒
  2. ボタンタップ 色変更:赤
  3. ユーザー入力 “うえお” 色: 赤
  4. “あい(色: 黒)うえお(色: 赤)

環境: Xcode 6.4
ターゲット: iOS 7.0以上

解決

入力中のテキストの属性を変更したい場合はUITextViewtypingAttributesプロパティを変更します。
例えば、ボタンを押したところから赤い色に変更する場合は下記のようにtypingAttributesNSForegroundColorAttributeName[UIColor redColor]のペアを設定します。

- (IBAction)changeColor:(id)sender {
    self.textView.typingAttributes = @{NSForegroundColorAttributeName: [UIColor redColor]};
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *