он работает для меня, помещая присвоение текстового значения в метод 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.
}
Комментарий:
Я настроил исходный фрагмент кода с типовыми namings и ценности, очевидно. Надеюсь, нет опечатки. Тем не менее, код содержит также расчет требуемой высоты кадра для текста, если значение текста может измениться и, следовательно, потребует разных размеров кадра.
Размещение фактического назначения текстового значения в методе scrollViewDidScroll работало для меня без каких-либо вспышек во время прокрутки и т. Д. (Пока что только тестировалось в iPhone Simulator).
Надеюсь, что это поможет. Конечно, я открыт для любой конструктивной обратной связи, предложений по улучшению или даже других способов решения этой проблемы.
Спасибо за ваш ответ. Я также думаю, что ошибка связана с тем, что UITextView является подклассом UIScrollView, так как это также происходит с UIWebView. Однако я не думаю, что это попытка работать против система, так как это естественный способ отображения набора шагов или команд – muesan 2008-10-02 09:46:30
Я согласен, но я не думаю, что это ошибка, это особенность. Я не вижу, чтобы Apple избегала этого. – 2009-04-15 11:10:29