在滚动文本视图之前,无法在UITextView中看到文本

时间:2012-06-21 22:19:36

标签: objective-c uiscrollview interface-builder uitextview

我的应用程序中有一堆textview。出于某种原因,无论我是以编程方式(来自互联网)还是通过界面构建​​器(硬编码)设置UITextView文本,无论我做什么,当我在测试时转到该文本视图时它都是空白的。但是我滚动它的所有文本只是出现在没有的地方。只是为了澄清,我并不是说textview不会滚动,因为没有足够的文本。 textview中有文本编程,但是当应用程序运行时它不会显示任何文本,直到文本视图实际滚动,然后文本才会出现。

任何人都知道如何解决这个问题?我尝试取消关联视图和重新链接以及所有内容。

代码: h文件

@interface AboutViewController : UIViewController 
{

    IBOutlet UITextView *textView;
    NSMutableData *responseData;
    NSString *res;
}
@property(nonatomic,retain)IBOutlet UITextView *textView;
@property (nonatomic,retain)NSMutableData *responseData;

@end

m file

#import "AboutViewController.h"
@interface AboutViewController ()

@end

@implementation AboutViewController
@synthesize responseData= _responseData;
@synthesize textView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.someurl.com"]];


        [NSURLConnection connectionWithRequest:req delegate:self];
    }
    return self;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    if (!_responseData) {
        [self setResponseData:[NSMutableData data]];
    }

    [_responseData appendData:data];
}


  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)URLresponse {

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)URLresponse;

    if (![httpResponse isKindOfClass:[NSHTTPURLResponse class]]) {
        NSLog(@"Unknown response type: %@", URLresponse);
        return;
    }


}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {

    res=[[NSString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding];

    textView.text = res;

    NSLog(@"RES:%@",res);
}

- (void)viewDidLoad
{
    [super viewDidLoad];

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(void)dealloc{
    [super dealloc];
    [res release];
}
@end

2 个答案:

答案 0 :(得分:4)

我猜你的UITextView在设置它的文本时是不可见的,因此没有绘制文本。

一旦您的UITextView可见,您可以通过执行以下操作强制它绘制文本:

[textView setNeedsDisplay];

或许这个:

[textView layoutSubviews];

否则,请不要设置UITextView的text属性,直到它已经可见。

其他可能性:

  1. 您的UITextView是否在包含UITextView的视图的框架内?如果父视图没有剪辑子视图,并且UITextView在父视图的框架之外可能是您的问题。问题还可能是父视图在父视图的父视图边界之外,或父视图的父视图的边界等等。
  2. 您是否尝试在文本视图中加载大量文字?如果是这样,尝试做一些简单的事情,如textView.text = @“test”;看看是否有效。
  3. 你的textView是UIScrollView或UIWebView的子视图吗?这肯定会带来问题。
  4. 你的textView是否在另一个视图后面?如果是这样,请尝试将文本视图放在前面,看看是否能解决问题。
  5. 通常,您遇到一些布局问题,导致UITextView无法绘制文本。出于某种原因,它并不认为需要绘制文本。也许它不认为它在屏幕上或可见。

    唉,最绝望的解决方案可能是模拟滚动:

    textView.contentOffset = CGPointMake(0, 1);
    textView.contentOffset = CGPointMake(0, 0);
    

答案 1 :(得分:0)

请在textView正在加载

时试用
NSAttributedString *oldtext = objTextView.attributedText;

[objTextView removeFromSuperview];

objTextView.attributedText = oldtext;

[self.view addSubview:objTextView];

就我而言,我的文字是attributed