4

インデントを作成するために特定のポイントの長さに設定された属性を持つNSAttributedString @"\u2022"(箇条書きのユニコード) を挿入することにより、textView がカスタム ボタンを介して箇条書きを許可できるようにしようとしています。NSParagraphStyleheadIndent

問題は次のとおりです。その属性付きの箇条書きを UITextView のattributedStringプロパティに追加すると、その属性は今後入力されるすべてのテキストで有効になります。これが意味することは、新しい行に移動すると (Enter キーを押すか、textView の水平方向の境界に達するのに十分なだけ入力するかどうかにかかわらず)、常にインデントされるということです。箇条書きだけを含む attributedString に属性を割り当てるので、入力された他のすべてのテキストに影響する理由がわかりません。

将来のすべてのテキストに影響するため、特定の範囲に割り当てられなくなったように見えるため、属性を削除する方法は考えられません。そして、私が知っている属性を削除する唯一の方法は、割り当てられた範囲がある場合ですremoveAttribute:range:

typingAttributesもう 1 つの注意: この属性は UITextView のプロパティには存在しません。

コードは次のとおりです。

NSMutableAttributedString *bulletString = [[NSMutableAttributedString alloc]initWithString:@"\u2022"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
[style setFirstLineHeadIndent:25.0];
[bulletString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0.0, [bulletString.string length])];

NSMutableAttributedString *textViewText = [[NSMutableAttributedString alloc]initWithAttributedString:self.textView.attributedText];
[textViewText appendAttributedString:bulletString];
 self.textView.attributedText = textViewText;

概要: textView のテキストに NSParagraphStyle 属性が追加された NSAttributedString。属性は、作成時に特定の範囲に割り当てられているにもかかわらず、今後入力されるすべてのテキストに影響します。

4

1 に答える 1