это работает для меня, помещая присвоение текстового значения в метод scrollViewDidScroll .
Примеры фрагментов:
SAMPLE.h
...
@interface myRootUIViewController : UIViewController <UIScrollViewDelegate>
...
Комментарий:
Просто для запоминания: не забудьте протокол UIScrollViewDelegate.
SAMPLE.m
- (void)viewDidLoad {
... whatever is created before and/or after...
NSString * text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc semper lacus quis erat. Cras sapien magna, porta non,
suscipit nec, egestas in, arcu. Maecenas sit amet est.
Quisque felis risus, tempor eu, dictum ac, volutpat id,
libero. Ut gravida, purus vitae interdum elementum, tortor
justo porttitor nisi, id rhoncus massa.";
// calculate the required frame height according to defined font size and
// given text
CGRect frame = CGRectMake(0.0, 500.0, self.view.bounds.size.width, 1000.0);
CGSize calcSize = [text sizeWithFont:[UIFont systemFontOfSize:13.0]
constrainedToSize:frame.size lineBreakMode: UILineBreakModeWordWrap];
// for whatever reasons, contraintedToSize seem only be able to
// calculate an appropriate height if the input frame height is larger
// than required. Means: if your text requires height=250 and input
// frame height=100, then this method won't give you the expected
// result.
frame.size = calcSize;
frame.size.height += 0; // calcSize might be not pixel-precise,
// so add here additional padding pixels
UITextView * tmpTextView = [[UITextView alloc]initWithFrame:frame];
// do whatever adjustments
tmpTextView.backgroundColor = [UIColor blueColor]; // show area explicitly (dev
// purpose)
self.myTextView = tmpTextView;
self.myTextView.editable = NO;
self.myTextView.scrollEnabled = NO;
self.myTextView.multipleTouchEnabled = NO;
self.myTextView.userInteractionEnabled = NO; // pass on events to parentview
self.myTextView.font = [UIFont systemFontOfSize:13.0];
[tmpTextView release];
[self.scrollView addSubview:self.myTextView];
}
...
- (void)scrollViewDidScroll:(UIScrollView *)sender {
// for simplicity text is repeated again, of course it can be a member var/etc...
NSString * text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc semper lacus quis erat. Cras sapien magna, porta non,
suscipit nec, egestas in, arcu. Maecenas sit amet est.
Quisque felis risus, tempor eu, dictum ac, volutpat id,
libero. Ut gravida, purus vitae interdum elementum, tortor
justo porttitor nisi, id rhoncus massa.";
self.myTextView.text = text; // assign value within this method and it is
// painted as expected.
}
Комментарий:
Я откорректировал фрагмент исходного кода с примерами имен и значений. Надеюсь, нет опечатки. Тем не менее, код содержит также вычисление требуемой высоты рамки для текста, в случае, если значение текста может измениться и, следовательно, потребует фактически других размеров рамки.
Помещение фактического назначения текстового значения в метод scrollViewDidScroll работало для меня без каких-либо перепрошивок во время прокрутки и т. Д. (Пока что проверено только в iPhone Simulator).
Надеюсь, это поможет. Конечно, я открыт для любых конструктивных отзывов, предложений по улучшению или даже других способов решения этой проблемы.