получить UIWebView для загрузки в CGRect правильно - PullRequest
0 голосов
/ 15 марта 2011

Я пытаюсь заставить мой webView корректно загрузиться в настроенном фрейме CGRect с работающим ActivityIndicator.

Он вроде загружается правильно, когда у меня настроен [self.view addSubview:webView];, ноиндикатор активности не отображается.Когда я настраиваю его с помощью webView.delegate = self;, индикатор активности появляется, но при загрузке веб-просмотр закрывает весь экран.У меня есть сегментированная полоса сверху, которая затем закрывается.

- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect webFrame = CGRectMake(0.0, 50.0, 320.0, 318.0);

    activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [self.view addSubview:activityIndicator];
    activityIndicator.frame = CGRectMake(250, 250, 30.0, 30.0);
    self.view.center = CGPointMake(160.0f, 190.0f);
    activityIndicator.center = self.view.center;

    webView = [[UIWebView alloc] initWithFrame:webFrame];

    [webView setBackgroundColor:[UIColor whiteColor]];
    NSString *urlAddress = @"http://www.google.com";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    webView.delegate = self;
//  [self.view addSubview:webView]; 
}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"activity started");
    [activityIndicator startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"activity stopped");
    [activityIndicator stopAnimating];
    self.view = webView;
}

1 Ответ

2 голосов
/ 15 марта 2011

Это должно быть

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"activity stopped");
    [activityIndicator stopAnimating];
    [[self view]  addSubView:webView];
}

Представления не были покрыты, они были удалены из иерархии путем сброса свойства представления.

...