UITextView(在UITableViewCell中)滚动到当前位置

时间:2015-03-15 07:04:40

标签: ios objective-c uitableview uitextview

我试图让UITextView动态调整大小,并在插入新行时滚动其位置。

textView位于UITableViewCell。单元格高度设置为UITableViewAutomaticDimension

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"])
    {
        NSRange cursor = NSMakeRange(range.location + 1, 0);

        NSMutableString *mutableT = [NSMutableString stringWithString:textView.text];
        [mutableT insertString:@"\n " atIndex:range.location];
        [textView setText:mutableT];

        [textView setSelectedRange:cursor];
        [textView sizeToFit];
        [textView layoutIfNeeded];

        [self.myTableView beginUpdates];
        [self.myTableView endUpdates];
        return NO;
    }
    return YES;
}

一切正常,直到插入新行并且当前textViews范围(光标)不在视野范围内。当发生这种情况时,tableView会滚动到顶部。但是只要插入另一个char,它就会滚动回正确的位置。

问题:

如何让tableView不要一直向上滚动?

1 个答案:

答案 0 :(得分:0)

beginUpdatesendUpdates来电之间插入此行。

[self.myTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone];