UITextView
特定の文字が入力されると、解析され、その属性が変更される があります。テキストは変更されず、テキストのフォーマットを記述する属性のみが変更されます。
すべての文字エントリを解析すると、基本的に を取得text
し、正しい書式設定で属性付き文字列を作成しattributedText
、textview のプロパティを新しい属性付き文字列に設定します。これにより、オートコレクト、ダブルスペースのショートカット、およびスペル チェックが完全に機能しなくなります。
特定の特殊文字が入力された場合にのみ解析すると、これは少しうまく機能しますが、すべての文の 2 番目の単語が大文字になるなどの奇妙なバグが発生します。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if (text.length == 0) {
return YES;
}
unichar firstCharacterInText = [text characterAtIndex:0];
if (/* special character */) {
[self processTextView];
}
}
- (void) processTextView {
NSString *text = self.text;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
[attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:kFontRegular size:12.0f] range:NSMakeRange(0, text.length)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor textColor] range:NSMakeRange(0, text.length)];
// set other properties
}
私の質問は次のとおりです。テキストビューのプロパティをリセットせずに、テキストビューのテキスト属性を変更して、のattributedText
便利な機能をすべて壊す方法はありUITextView
ますか?