This should do the trick:
- (void)textViewDidChange:(UITextView *)textView
{
CGRect frame = textView.frame;
frame.origin.y = CGRectGetMaxY(frame) - [textView contentSize].height;
frame.size.height = [textView contentSize].height;
textView.frame = frame;
}