我的应用程序中有一堆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
答案 0 :(得分:4)
我猜你的UITextView在设置它的文本时是不可见的,因此没有绘制文本。
一旦您的UITextView可见,您可以通过执行以下操作强制它绘制文本:
[textView setNeedsDisplay];
或许这个:
[textView layoutSubviews];
否则,请不要设置UITextView的text属性,直到它已经可见。
其他可能性:
通常,您遇到一些布局问题,导致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