Objective c Can';在文本视图滚动之前,无法在UITextView中查看文本
我的应用程序中有很多文本视图。出于某种原因,无论我是通过编程方式(来自internet)还是通过界面生成器(硬编码)设置UITextView文本,无论我做什么,当我在测试时转到该文本视图时,它都是空的。但是,当我滚动它的时候,所有的文本都不在任何地方出现了。只是澄清一下,我并不是说文本视图不会滚动,因为没有足够的文本。textview中已编程文本,但在应用程序运行时,它不会显示任何文本,直到textview实际滚动,然后文本才显示出来 有人知道怎么解决这个问题吗?我尝试过取消视图链接、重新链接以及所有内容 代码: h文件 m文件Objective c Can';在文本视图滚动之前,无法在UITextView中查看文本,objective-c,uiscrollview,interface-builder,uitextview,Objective C,Uiscrollview,Interface Builder,Uitextview,我的应用程序中有很多文本视图。出于某种原因,无论我是通过编程方式(来自internet)还是通过界面生成器(硬编码)设置UITextView文本,无论我做什么,当我在测试时转到该文本视图时,它都是空的。但是,当我滚动它的时候,所有的文本都不在任何地方出现了。只是澄清一下,我并不是说文本视图不会滚动,因为没有足够的文本。textview中已编程文本,但在应用程序运行时,它不会显示任何文本,直到textview实际滚动,然后文本才显示出来 有人知道怎么解决这个问题吗?我尝试过取消视图链接、重新链接以
#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
我猜想,当您设置UITextView的文本时,它不可见,因此无法绘制文本 一旦UITextView可见,您可以通过执行以下操作强制它绘制文本:
[textView setNeedsDisplay];
或者可能是这样:
[textView layoutSubviews];
否则,在UITextView显示之前,不要设置它的text属性
其他可能性:
textView.contentOffset = CGPointMake(0, 1);
textView.contentOffset = CGPointMake(0, 0);
请在加载
textView
时尝试
NSAttributedString *oldtext = objTextView.attributedText;
[objTextView removeFromSuperview];
objTextView.attributedText = oldtext;
[self.view addSubview:objTextView];
在我的情况下,我的文本是
属性化的
谢谢所有的帮助,但我无法让它工作。我用我的代码编辑了我的原始问题-注意:我更改了url,因为它不需要在internet上共享。你尝试了我提出的所有建议吗?你的代码没有问题,正如我所建议的,在布局方面可能还有其他一些事情正在发生,这使得文本视图认为它不需要绘制文本。谢谢Michael!我也面临这个问题。但是通过使用你的1种可能性,我的问题得到了解决是否有可能从后台线程调用initWithNibName:bundle:呢?您可能想尝试一些标准的调试技术,如翻转僵尸对象;对我来说,这听起来像是一些腐败的内部结构。
NSAttributedString *oldtext = objTextView.attributedText;
[objTextView removeFromSuperview];
objTextView.attributedText = oldtext;
[self.view addSubview:objTextView];