5

したがって、私のアプリケーションでは、現在のビュー(classesWebView)の上にビュー(aView)をサブビューとして追加します。すべてのaViewは、その上にUIActivityIndi​​catorViewを備えたUIViewであり、その下のビュー(classesWebView)が適切なWebページをロードしている間にアニメーション化することになっています。

classesWebView Webページが表示されていることがわかります(aViewのアルファ値は.5です)が、ロードが完了するとすぐにaViewが送信され[aView removeFromSuperview]消えますが、消えると残りはすべてです。その場所に白い画面があります。

私は他の2つの方法でこれを行いましたが、なぜこの方法だけで協力を拒否するのかわかりません。

任意の提案をいただければ幸いです。アプリはiOS6用です。

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]と呼ぶ2番目のWebページは、白い画面に変わります。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

そのため、動作させることはできませんでしたが、[aView setAlpha:0]を設定するだけで不正になりました。それは私が必要としていたもののために働いた。でも提案をありがとう、みんな。

于 2013-03-18T15:14:40.793 に答える
0

にサブビューを追加するべきではないと思いますUIWebViewaViewを含むビューに追加してみてclassesWebView、問題が解決するかどうかを確認してください。

于 2013-03-16T05:06:13.707 に答える
0

これを試してください.. activityIndi​​cator の aView を追加しないようにしてください。

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 に答える