2012-02-28 2 views
2

Я пытаюсь вертикально выровнять UITextView, установив соответствующее смещение содержимого.UITextView contentoffset update not working

Я звоню следующий код, когда я изменить текст моего 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) независимо от того, что я установил.

Должен ли я что-то сделать для сброса содержимогоОфис или контентИнструкция перед попыткой ее сброса?

Спасибо, ребята, любая помощь очень ценится.

Duncs

ответ

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

использовать этот deligate он будет вызывать, если любое изменение текста произойдет в TextView может кодировать в этом

+0

если это не поможет мне –

+0

Спасибо, но это не исправить проблему. Этот метод вызывается только тогда, когда пользователь меняет текст в текстовом виде, и в этом случае он не является обновляемым пользователем текстом. Даже если это было вызвано, я не думаю, что он обращается к проблеме, когда contentOffset не выполняет сброс правильно. Спасибо, в любом случае. – theDuncs

+0

, где будет вызываться эта функция, означающая viewdidload или view. –

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];