好的,我终于实现了它,并且更容易,你不需要像我之前说的那样使用contentOffset,它可以工作,但有一些意想不到的问题。技巧是使用辅助UITextView
来计算光标上方文本的高度。
这里的想法(我测试了它和作品):
表视图控制器应通过滚动使用scrollRectToVisible
与所述给定偏移表视图实现cellDidChange
。确切的计算会减少案件的数量,但重要的是要调用beginUpdate
和endUpdate
以强制更新应该基于属性rowHeight的行高度。
这里是代码的一部分(对不起,我不能发布实际的代码,因为是在一个大的背景下)。
-(void)textViewDidChange:(UITextView *)textView {
if(_prevHeight != self.textHeight) {
_prevHeight = self.textHeight;
NSRange range;
range.location = 0;
range.length = textView.selectedRange.location;
NSString *str = [_textView.text substringWithRange:range];
_auxTextView.text = str;
[delegate cellDidChange:self offset:_auxTextView.contentSize.height];
}
}
-(CGFloat)rowHeight {
return self.textHeight + somePadding;
}
-(CGFloat)textHeight {
return fmaxf(_textView.contentSize.height, someMinimumHeight);
}
谢谢,我会尝试一些你的技巧,看看会发生什么...... – bpatrick100 2011-03-08 04:07:38