检查 UITextView 中的文本是否由于自动换行而换行

Check if text in UITextView went to new line due to word wrap

如何检查 UITextView 中的文本是否由于自动换行而转到下一行?

我目前有代码来检查用户是否输入了新行(从键盘)。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
{
    if ( [text isEqualToString:@"\n"] ) {
        ...
    }
    return YES;
}

您可以使用 UITextView 的 contentSize.height 属性 来确定您的文本视图如何 'tall'。然后,您可以除以 lineHeight 来计算行数。 @nacho4d 提供了这行漂亮的代码来做到这一点:

int numLines = textView.contentSize.height/textView.font.lineHeight;

请参阅此问题了解更多信息: How to read number of lines in uitextview

编辑: 因此,您可以在 -textViewDidChange: 中执行类似的操作,以检查行更改。

int numLines = textView.contentSize.height / textView.font.lineHeight; 
if (numLines != numLinesInTextView){
    numLinesInTextView = numLines;//numLinesInTextView is an instance variable
    //then do whatever you need to do on line change
}