当前位置: 移动技术网 > 移动技术>移动开发>Android > UITextView自定义文字属性后 光标自动跳到末尾的问题

UITextView自定义文字属性后 光标自动跳到末尾的问题

2020年09月26日  | 移动技术网移动技术  | 我要评论
在使用 UITextView 控件中,我们经常需要自定义文字的大小、行间距等属性,让用户输入文字时可以按照设置好的文字属性显示。- (void)textViewDidChange:(UITextView *)textView { // 设置content格式 // 字体 UIFont *font = self.font; // 设置格式属性 NSMutableParagraphStyle *paragraphStyle = [[NSMutabl

在使用 UITextView 控件中,我们经常需要自定义文字的大小、行间距等属性,让用户输入文字时可以按照设置好的文字属性显示。

- (void)textViewDidChange:(UITextView *)textView {    
    // 设置content格式
    // 字体
    UIFont *font = self.font;
    
    // 设置格式属性
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = lineSpace; //行间距
    paragraphStyle.firstLineHeadIndent = font.pointSize * indentNumber; //首行缩进宽度
    paragraphStyle.alignment = NSTextAlignmentJustified;
    NSDictionary *attributes = @{
        NSFontAttributeName:font,
        NSParagraphStyleAttributeName:paragraphStyle
    };
    self.attributedText = [[NSAttributedString alloc] initWithString:self.text attributes:attributes];
}

只是实现了上述操作后,我发现了一个奇怪的问题,如果在已经存在的文字中间添加文字,每次输入之后光标都会提动跳到末尾去。最后只能通过代码控制光标的位置,来解决了这个问题。

    // 记录当前光标
    NSUInteger loc = self.selectedRange.location;
    NSUInteger len = self.selectedRange.length;
    
    // 字体
    UIFont *font = self.font;
    
    // 设置格式属性
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = lineSpace; //行间距
    paragraphStyle.firstLineHeadIndent = font.pointSize * indentNumber; //首行缩进宽度
    paragraphStyle.alignment = NSTextAlignmentJustified;
    NSDictionary *attributes = @{
        NSFontAttributeName:font,
        NSParagraphStyleAttributeName:paragraphStyle
    };
    self.attributedText = [[NSAttributedString alloc] initWithString:self.text attributes:attributes];
    
    // 重设之前光标
    // 解决设置了属性后 光标自动跳转到最后的问题
    self.selectedRange = NSMakeRange(loc, len);
    
    // 并设置textview滚动到光标位置
    // 解决因之前光标跳转到最后 导致的问题
    [self scrollRangeToVisible:self.selectedRange];

 

本文地址:https://blog.csdn.net/wangooo/article/details/108817258

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网