gpt4 book ai didi

ios - 在 iOS 中对 UITextView 的选定文本应用富文本格式

转载 作者:可可西里 更新时间:2023-11-01 03:34:34 30 4
gpt4 key购买 nike

我正在创建一个应用程序,我必须在其中实现如下功能:

1) 写入textview

2) 从 TextView 中选择文本

3) 允许用户在所选文本上应用粗体、斜体和下划线功能。

我已经开始使用 NSMutableAttributedString 来实现它。它适用于粗体和斜体,但仅用选定的文本替换 TextView 文本。

-(void) textViewDidChangeSelection:(UITextView *)textView
{
rangeTxt = textView.selectedRange;
selectedTxt = [textView textInRange:textView.selectedTextRange];
NSLog(@"selectedText: %@", selectedTxt);

}

-(IBAction)btnBold:(id)sender
{

UIFont *boldFont = [UIFont boldSystemFontOfSize:self.txtNote.font.pointSize];

NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName];

NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:selectedTxt attributes:boldAttr];

txtNote.attributedText = attributedText;

}

谁能帮我实现这个功能?

提前致谢。

最佳答案

您不应为此目的使用 didChangeSelection。请改用 shouldChangeTextInRange

这是因为当您将属性字符串设置为新字符串时,您不会替换特定位置的文本。您用新文本替换全文。您需要范围来定位要更改文本的位置。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

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

NSRange selectedTextRange = [textView selectedRange];
NSString *selectedString = [textView textInRange:textView.selectedTextRange];

//lets say you always want to make selected text bold
UIFont *boldFont = [UIFont boldSystemFontOfSize:self.txtNote.font.pointSize];

NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName];

NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:selectedString attributes:boldAttr];

// txtNote.attributedText = attributedText; //don't do this

[textViewText replaceCharactersInRange:range withAttributedString:attributedText]; // do this

textView.attributedText = textViewText;
return false;
}

关于ios - 在 iOS 中对 UITextView 的选定文本应用富文本格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17563046/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com