0

UITextView を使用してリッチ テキスト編集を扱うアプリを作成しています。NSTextStorage を使用して、文字列の一部に新しい属性を設定します。ただし、ユーザーが新しいスタイルのテキストの文字列の末尾または文字列の途中でフォントまたはフォント サイズを変更したい場合 (つまり、渡された範囲setAttributes:range:の長さが 0 の場合)、これは0の範囲で属性を設定できないため、実行できません。基本的に、UITextViewのカーソルの位置に新しいUIFontを設定するにはどうすればよいですか?

私の NSTextStorage サブクラスからの関連コード:

- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range
{
NSLog(@"setAttributes:%@ range:%@", attrs, NSStringFromRange(range));

[self beginEditing];
[_backingStore setAttributes:attrs range:range];

[_backingStore fixAttributesInRange:range];

[self edited:NSTextStorageEditedAttributes range:range changeInLength:0];
[self endEditing];
}
4

3 に答える 3

3

これを行う正しい方法は、 のtypingAttributesプロパティを設定することUITextViewです。

于 2014-10-24T03:33:31.110 に答える
0

私ははるかに良い方法でやりました。テキストストレージにスペースを追加する [myTextView insertText: @" "] を呼び出すだけで、range.length は == 0 ではなくなりました。次に、その範囲のテキストで必要なことを行います。その後、すぐに [myTextView deleteBackward: nil] を呼び出します。スーパーマンでも何も見えませんでしたが、そのトリックは空の範囲で必要なことを何でも行います.

于 2014-10-24T02:34:54.610 に答える