Por que o NSString sizeWithFont: retorna o tamanho errado?

Preciso calcular a altura de um UITextView de cima para baixo até o cursor. Estou aparando o texto que ele contém (portanto, ele só sobe para o cursor) e, em seguida, usando @ do NSStrisizeWithFont:constrainedToSize:lineBreakMode: método para calcular a altura, assim:

   NSRange range;
   range.location = noteTextView.selectedRange.location;
   range.length = noteTextView.text.length - range.location;

   NSString *string = [noteTextView.text stringByReplacingCharactersInRange:range withString:@""];

   CGSize size = [string sizeWithFont:noteTextView.font 
                     constrainedToSize:noteTextView.frame.size 
                         lineBreakMode:UILineBreakModeWordWrap];

   NSLog(@"height is: %f \n", size.height);

Faz isso toda vez que digito qualquer cois

O problema é que, quando assisto o NSLog enquanto digito, ele não registra uma alteração de altura até digitar 4 caracteres na nova linha. É como se osizeWithFont método @ tem exatamente quatro caracteres. Aqui estão algumas capturas de tela mostrando o que quero dizer:

Alguém pode me contar o que está acontecendo

questionAnswers(1)

yourAnswerToTheQuestion