2011-10-04 46 views
0

我有一个非常奇怪的情况下(类似于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]; 


} 
+1

您是不是使用导航控制器来将viewcontroller设置到屏幕上? (使用导航控制器时不需要显示导航栏)。 – ader

+0

不,我不知道 - 也许这就是答案?我以为我自己编码一切,但我想导航控制器不会是一个坏主意。 –

+1

如果您担心这一点,则不必使用Interface Builder,您可以通过编程方式创建导航控制器。 – ader

回答

0

好吧,我只需使用一个UINavigationController来处理该问题的UITextView发现意见解决了这个。我仍然不明白为什么会造成问题,但是如果遇到这个问题,UIViewController的结构和它们刷新(或不刷新)UITextView的方式可能有问题。