【发布时间】:2014-06-25 18:12:16
【问题描述】:
我需要UITextField 在用户键入时将某些单词替换为粗体字。在指定textViewDidChange 的方法中,我有:
-(void)textViewDidChange:(UITextView *)textView {
self.notepadTextView.font = [UIFont fontWithName:@"ProximaNova-Regular" size:20];
NSString *textEntryContents = [[self notepadTextView ]text];
[gCore processSpeechText:textEntryContents]; //program specific function enabling speech
...
textEntryContents = [textEntryContents stringByReplacingOccurrencesOfString:@" performance" withString:@"\n\nPerformance"];
UIFont *fontBold = [UIFont fontWithName:@"ProximaNova-Bold" size:20];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:textEntryContents];
[string addAttribute:NSFontAttributeName value:fontBold range:NSMakeRange(0,textEntryContents.length)];
self.notepadTextView.attributedText = string;
}
这会格式化用户输入的文本,以便每次键入“性能”一词时,都会开始一个新行。这很好用。我试着让它每次输入“性能”时,它也会加粗这个词。加粗方面有效;然而,它加粗了一切,而不仅仅是性能这个词。
如果用户输入:
“性能测试良好,但需要更多更新。”
应该发生什么:
"性能
测试良好,但需要更多更新。”
会发生什么:
"性能
测试良好,但需要更多更新。"
self.notepadTextView.attributedText = string 似乎覆盖了之前的 UIFont 对每个单词的更改,我不知道如何使 UITextField 接受两个“self.textView.text”而不覆盖另一个。此外,我不知道我可以将属性字符串范围更改为什么,因为对于键入“性能”一词的任何索引,范围都会不断变化。
如果您有任何问题,请告诉我!但请帮忙!
【问题讨论】:
-
找到子字符串的范围,然后只用粗体显示。
-
也许正则表达式可以帮助您识别关键字。
标签: ios objective-c uitextfield nsattributedstring