3

我的应用程序中有一堆文本视图。出于某种原因,无论我以编程方式(来自互联网)还是通过界面构建​​器(硬编码)设置 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

文件

#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
4

2 回答 2

4

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

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

[textView setNeedsDisplay];

或者也许是这样:

[textView layoutSubviews];

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

其他可能性:

  1. 您的 UITextView 是否在包含您的 UITextView 的视图框架内?如果父视图不剪辑子视图并且 UITextView 位于父视图的框架之外,这可能是您的问题。问题还可能是父视图超出了父视图的父视图的边界,或者父视图的父视图的边界等。
  2. 您是否尝试将大量文本加载到文本视图中?如果是这样,请尝试做一些简单的事情,例如 textView.text = @"test"; 看看这是否有效。
  3. 你的 textView 是 UIScrollView 还是 UIWebView 的子视图?这肯定会出现问题。
  4. 你的 textView 在另一个视图后面吗?如果是这样,请尝试将文本视图放在前面,看看是否可以解决问题。

通常,您有一些布局问题导致 UITextView 不绘制它的文本。出于某种原因,它认为不需要绘制文本。也许它不认为它在屏幕上或可见。

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

textView.contentOffset = CGPointMake(0, 1);
textView.contentOffset = CGPointMake(0, 0);
于 2012-06-21T22:51:17.103 回答
0

请在textView加载时尝试

NSAttributedString *oldtext = objTextView.attributedText;

[objTextView removeFromSuperview];

objTextView.attributedText = oldtext;

[self.view addSubview:objTextView];

就我而言,我的文字是attributed

于 2013-01-08T08:11:13.500 回答