UITextView中删除多行

时间:2016-04-21 08:14:05

标签: ios objective-c uitextview

当用户键入/删除字符时,我尝试在UITextView中以编程方式调整objective c的高度。只要用户不一次删除多行,它就能很好地适用于我。因此,主要问题是如何在UITextView中检测多行删除并获得此行数(之后调整高度很容易)。

2 个答案:

答案 0 :(得分:0)

我不知道多行,但是这个方法可以帮助你了解UITextView中字符范围的变化

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
 {
  char toDelete = [textView.text characterAtIndex:range.location];

    int duplicateCharCount = 0;
    for(int i =range.location-1; i>=0; i--) {

        if([textView.text characterAtIndex:i] == toDelete) {
            duplicateCharCount++;
        } else {
            break;
        }  
    }

    NSRange newRange = NSMakeRange(0, range.location - duplicateCharCount);
    [textView setText:[textView.text substringWithRange:newRange]];

    return NO;
} else {
    return YES;
}

但是对于您的场景,您可以通过了解textview的帧大小来计算行数:

UIFont *font = [UIFont boldSystemFontOfSize:11.0];
CGSize size = [string sizeWithFont:font 
                  constrainedToSize:myUITextView.frame.size 
                  lineBreakMode:UILineBreakModeWordWrap]; // default mode
float numberOfLines = size.height / font.lineHeight;

答案 1 :(得分:0)

textViewDidChange的{​​{1}}委托方法中使用以下代码:

UITextView