5

因此,对于我的应用程序,我在当前视图 (classesWebView) 之上添加了一个视图 (aView) 作为子视图。所有的 aView 都是一个 UIView,上面有一个 UIActivityIndi​​catorView,它应该在下面的视图(classesWebView)加载适当的网页时进行动画处理。

我可以看到 classesWebView 网页确实出现了(aView 的 alpha 为 0.5),但是一旦它完成加载,aView 就会被发送 [aView removeFromSuperview] 并且它消失了,但是在它消失之后,剩下的就是在它的地方有一个白色的屏幕。

我已经为其他两种方法这样做了,我不知道为什么,仅在这种方法上,它拒绝合作。

任何建议,将不胜感激。该应用程序适用于 iOS 6。

viewDidLoad 方法:

-(void)viewDidLoad
{
    [super viewDidLoad];

    classesWebView.delegate = self;

    [classesWebView addSubview:aView];

    NSURL *class = [NSURL URLWithString:@"mywebistelink"]; 

    NSURLRequest *classRequest = [NSURLRequest requestWithURL:class]; 

    [classesWebView loadRequest:classRequest];   
}

webViewDidStartLoad 方法:

preView 和 switchView 是活动指示器。

- (void)webViewDidStartLoad:(UIWebView *) webview
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    if(aView.superview != nil)
    {
        [preView startAnimating];
    }
    else
    {
        [switchView startAnimating];
    }
}

webViewDidFinishLoad 方法:

- (void)webViewDidFinishLoad:(UIWebView *) webview
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

    if(aView.superview != nil)
    {
        [aView removeFromSuperview];
        [preView stopAnimating];
        [preView setOpaque:false];
    }
    else
    {
        [switchView stopAnimating];
        [switchView setOpaque:false];
    }
}

[进一步明确:我有 if 语句的原因是因为我在加载页面时想要 classesWebView 的另一个指示器,但我不希望它出现,除非 aView 消失(因为 aView 已经有它的指示器:preView)]

编辑:只是为了证明它只是导致问题的 removeFromSuperview ,如果我调用 [aView setAlpha:0.0] 它会消失并且它下面的 webPage 正确加载。但是我调用 [aView removeFromSuperview] 的第二个网页变成了白屏。T_T

4

4 回答 4

0

试试这个:

    NSURL *class=[NSURL URLWithString:[yourwebistelink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSURLRequest *request=[NSURLRequest requestWithURL:class];

   [self.classesWebView loadRequest:request];
于 2013-03-15T05:33:32.667 回答
0

试试这个..并尝试不要为activityIndi​​cator添加一个View。试试这个这个来指示activityIndi​​cator

UIWebView * classesWebView = [[UIWebView alloc] init];

[classesWebView addSubview:activityIndicator];
[self.activityIndicator startAnimating]; //for activityIndicator

NSURLRequest *request = [NSURLRequest requestWithURL:weburl];
classesWebView.frame = CGRectMake(0, 200, 768, 400);
[classesWebView setScalesPageToFit:NO];
[classesWebView loadRequest:request];


- (void)webViewDidStartLoad:(UIWebView *)thisWebView
{

}

- (void)webViewDidFinishLoad:(UIWebView *)thisWebView
{
[self.activityIndicator stopAnimating];

    [activityIndicator removeFromSuperview];
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"Error : %@",error);
}

如果 webView 仍然显示空白,那么你必须用这个编码你的 url

NSString *encodedString=[graphStringUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *weburl = [NSURL URLWithString:encodedString];
NSURLRequest *request = [NSURLRequest requestWithURL:weburl];

然后在 webView 中加载这个请求

[classesWebView loadRequest:request];
于 2013-03-15T06:19:03.633 回答
0

我认为您不应该将子视图添加到UIWebView. 尝试添加aView到包含您的视图中classesWebView,看看是否能解决问题。

于 2013-03-16T05:06:13.707 回答
0

所以我从来没有让它工作,但我只是通过设置 [aView setAlpha:0] 来欺骗它。这对我需要的东西有用。不过,谢谢你们的建议,伙计们。

于 2013-03-18T15:14:40.793 回答