UITextView contentoffset更新无法正常工作

时间:2012-02-28 11:39:25

标签: objective-c ios xcode uitextview

我试图通过适当设置内容偏移来垂直对齐UITextView。

我在更改textView的文本时调用以下代码:

- (void)setCenterVerticalAlignmentForTextView:(UITextView*)textView {
    CGFloat topCorrect = ([textView bounds].size.height - [textView contentSize].height * [textView zoomScale])/2.0;
    topCorrect = (topCorrect < 0.0 ? 0.0 : topCorrect );
    textView.contentOffset = CGPointMake(0,-topCorrect);
}

第一次在屏幕上显示UIView时,这非常有效。

但是,如果我更改textView中的文本并再次调用此函数,则设置contentOffset的函数的最后一行似乎没有任何区别。无论我设置什么,内容偏移都会变为(0,0)。

在尝试重置之前,是否需要执行某些操作来重置contentOffset或contentInset?

谢谢大家,非常感谢。

Duncs

2 个答案:

答案 0 :(得分:0)

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;

使用此deligate,如果textview中发生任何文本更改,则会调用该

答案 1 :(得分:0)

This answer真的帮助了我。它不漂亮,但它有效!首先通过设置0,0重置。

CGPoint offset = CGPointMake(0, self.textView.contentSize.height - 
                                self.textView.frame.size.height);
[self.textView setContentOffset: CGPointMake(0,0) animated:NO]; 
[self.textView setContentOffset:bottomOffset animated:YES];