Iphone:使用UIWebView控制带有延迟问题的文本

时间:2010-12-25 22:05:16

标签: iphone objective-c ios4

我选择使用UIWebView,因此我可以控制我的包中的本地html文档中包含的文本的布局。我希望文本显示在UIWebView中,我已经包含在我的视图中。因此,文本不是整个视图,只是其中的一部分。

一切运行正常,但是当网页加载时,我会在文本出现之前获得一秒钟的空白屏幕。这看起来很糟糕。谁能给我一个如何阻止这种情况发生的例子?我假设我必须以某种方式隐藏Web视图,直到它完全加载?有人可以告诉我该怎么做吗?

目前我通过viewDidLoad调用我的代码:

[myUIWebView loadRequest: [NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"localwebpage" ofType:@"html"] isDirectory:NO]]];

非常感谢任何帮助。我已经阅读了几个论坛,并没有看到这个问题的一个很好的答案,似乎它像我这样的初学者一样重复出现问题。

感谢您花时间阅读这篇文章!

更新信息
感谢您的答复。下面的建议解决了这个问题但是为我创建了一个新的问题就像现在我的视图加载时一样,直到我点击我的切换开关才完全隐藏。要理解这一点,如果我发布我的所有代码,它可能是最有帮助的。在此之前,让我解释一下我的观点的设置。我有一个标准视图,其中我还有两个Web视图,一个在另一个之上。每个Web视图包含具有不同样式的不同文本。用户使用切换开关在视图之间轻弹,该切换开关隐藏/显示Web视图。我正在使用Web视图,因为我想控制文本的样式/布局。下面是我的完整.m代码,我无法弄清楚它出错的地方。我的网络浏览量称为牛津和牛津。哈佛我确定它与我隐藏/揭示观点的方式/时间有关。我玩过这个但似乎无法做到这一点。也许我的方法是错的。我们非常感谢您提供一些建议。

@implementation ReferenceViewController
@synthesize oxford;
@synthesize harvard;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[oxford loadRequest: [NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Oxford" ofType:@"html"] isDirectory:NO]]];
[harvard loadRequest: [NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Harvard" ofType:@"html"] isDirectory:NO]]];
[oxford setHidden:YES];
[harvard setHidden:YES];

}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
if([webView hidden]) {
    [oxford setHidden:NO];
    [harvard setHidden:NO];
}
}

//Toggle controls for toggle switch in UIView to swap between webviews
- (IBAction)toggleControls:(id)sender {
if ([sender selectedSegmentIndex] == kSwitchesSegmentIndex)
{
    oxford.hidden = NO;
    harvard.hidden = YES;
}
else 
{
    oxford.hidden = YES;
    harvard.hidden = NO;
}
}


- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

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


- (void)dealloc {
[super dealloc];
[oxford release];
[harvard release];

}


@end

1 个答案:

答案 0 :(得分:1)

当然,在UIViewController指定的初始值设定项中,将hidden实例的UIWebView属性设置为YES

[webView setHidden:YES];

然后,实施UIWebViewDelegate方法- (void)webViewDidFinishLoad:,并在方法中执行if检查,如下所示:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
   if([webView hidden]) {
      [webView setHidden:NO];
   }
}

另外,不要忘记指定您的班级符合UIWebViewDelegate协议:

@interface YourViewController : UIViewController <UIWebViewDelegate> {...}