我有一个非常奇怪的情况下(类似于this one):的UITextView:文本后,才手动地移动它出现
我有一个简单的UITextView它位于一个UIView我加载编程(NIB)。内容从TXT文件加载到UITextView.text中。这发生在viewDidLoad中。
一切都很好,如果我的文字只是几行,并且不需要滚动。但是,如果文本比UITextView长,文本将不会显示。只有当我触摸屏幕并尝试滚动时,文本才会突然弹出。
我尝试这样的微调来获取文本出现在viewDidLoad中:
textView.contentOffset = CGPointMake(0.0, 1.0);
textView.contentOffset = CGPointMake(0.0, 0.0);
但它不会工作。我也确保打电话给[super viewWillAppear]等,但是再次,没有运气。唯一有点帮助的是如果我启动我的视图并加载viewDidAppear中的文本。但是,除非我滚动,否则UITextView的最后部分仍然不显示。
任何想法为什么UITextView的行为是这样吗?我不知道任何建议,我会感激的,因为这让我忍无可忍。
编辑:
我现在知道是什么原因造成这种奇怪的行为,但我仍然不知道为什么这可能是。将显示PageView的ViewController在视图中动画化(将viewController滑动到屏幕中的简单动画块)。如果我拿走动画,一切都很好。不过,我不知道为什么。
这是一个更多的代码(不知道是否有助于澄清)。这是我启动视图的viewController。
- (void)viewDidLoad {
[super viewDidLoad];
if (self.currentPageView == nil) {
NSLog(@"createPage...");
PageView *cpv = [[PageView alloc] init];
self.currentPageView = cpv;
[cpv release];
[self.view addSubview:currentPageView.view];
}
[self loadContentsFromTXTFile];
[currentPageView setTitle:title
date:date
text:text ];
}
这是网页浏览类的初始化:
-(id)init {
//self = [super initWithNibName:nil bundle:nil];
self = [super initWithFrame:CGRectZero];
if (self) {
[[NSBundle mainBundle] loadNibNamed:@"PageView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
-(void)setTitle:(NSString *)title date:(NSString *)date text:(NSString *)text {
UILabel *mytitle = [self titleOfPage];
[mytitle setText:title];
UILabel *mydate = [self dateOfPage];
[mydate setText:date];
UITextView *mytext = [self textOfPage];
[mytext setText:text];
}
您是不是使用导航控制器来将viewcontroller设置到屏幕上? (使用导航控制器时不需要显示导航栏)。 – ader
不,我不知道 - 也许这就是答案?我以为我自己编码一切,但我想导航控制器不会是一个坏主意。 –
如果您担心这一点,则不必使用Interface Builder,您可以通过编程方式创建导航控制器。 – ader