После завершения removeFromSuperview на экране отображается белый экран
Поэтому для моего приложения я добавляю представление (aView) поверх моего текущего представления (classesWebView) в качестве подпредставления. Все, что представляет собой aView, это UIView с UIActivityIndicatorView поверх него, который должен анимироваться, пока представление внизу (classesWebView) загружает соответствующую веб-страницу.
Я вижу, что веб-страница classesWebView действительно появляется (aView имеет альфа-значение.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], он исчезает, и веб-страница под ним загружается правильно. Но вторая, которую я называю [aView removeFromSuperview], веб-страница превращается в белый экран. T_T
4 ответа
Поэтому я никогда не заставлял его работать, но я обманул его, просто установив [aView setAlpha:0]. Это сработало для того, что мне было нужно. Спасибо за предложения, ребята.
Попробуй это:
NSURL *class=[NSURL URLWithString:[yourwebistelink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request=[NSURLRequest requestWithURL:class];
[self.classesWebView loadRequest:request];
Я не думаю, что вы должны добавлять подпредставления к UIWebView
, Попробуйте добавить aView
к мнению, которое содержит ваши classesWebView
и посмотрим, решит ли это проблему.
Попробуйте это.. и попробуйте не добавлять aView для activityIndicator., попробуйте это для указания ActivityIndicator
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];