ios textView 设置行间距的一些bug

目前有这样一个需求,在用户输入文字的时候要设置行间距,因为不设置的话行与行之间挨太近了,设置行间距设置行间距从网上找的方法是

  • (void)textViewDidChange:(UITextView *)textView
    {
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = 5; // 字体的行间距
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;

    NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:14],
    NSParagraphStyleAttributeName:paragraphStyle
    };
    textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
    }

    但是这不好的地方是打出汉字会出现字母,越往后,字母出现越多.
    ios textView 设置行间距的一些bug_第1张图片
    Untitled.gif

    最后我自己试出来了, 但是要判断过滤候选字符,如果没有候选字符才给他换行
  • (void)textViewDidChange:(UITextView *)textView
    {
    // 判断是否有候选字符,如果不为nil,代表有候选字符
    if(textView.markedTextRange == nil)
    {
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = 5; // 字体的行间距
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;

      NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:14],
                                   NSParagraphStyleAttributeName:paragraphStyle
                                   };
      textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
    

    }
    }

    ios textView 设置行间距的一些bug_第2张图片
    Untitled.gif

    最后我想说的是网上很多解决方法都是我考你你考我,不是很靠谱, 还是要自己多测一下.
    另外textView设置间距后引发的其他问题,可以参考这位仁兄的.https://www.jianshu.com/p/0a14e6304b68

你可能感兴趣的:(ios textView 设置行间距的一些bug)