【发布时间】:2015-10-09 10:03:42
【问题描述】:
我已经尝试了所有这些(one、two、three、four)解决方案,但是当我从 web 视图屏幕返回到上一个 viewController 后,它冻结了大约 2 秒(有时更多) . viewWillAppear 中没有任何内容会导致冻结。
这里是 Web 视图控制器的 viewWillDisappear:
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[detailWebView stopLoading];
detailWebView.delegate = nil;
NSLog(@"viewWillDisappear called !!!");
}
第一个视图控制器:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:41.0/255.0 green:151.0/255.0 blue:132.0/255.0 alpha:1.0]];
UIImage *imagePlus = [[UIImage imageNamed:@"create.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
buttonCreate = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonCreate setImage:imagePlus forState:UIControlStateNormal];
[buttonCreate addTarget:self action:@selector(createActivity:) forControlEvents:UIControlEventTouchUpInside];
buttonCreate.frame = CGRectMake(self.view.frame.size.width - 40, 10, 16, 16);
[self.navigationController.navigationBar addSubview:buttonCreate];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"back", nil) style:UIBarButtonItemStylePlain target:nil action:nil];
[backButton setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blackColor]} forState:UIControlStateNormal];
self.navigationItem.backBarButtonItem = backButton;
[self.navigationController.navigationBar setTintColor:[UIColor blackColor]];
}
更新:我刚刚确认,如果我让 webView 完全加载然后转到上一个 viewController,则没有观察到冻结。
【问题讨论】:
-
您确定是
[detailWebView stopLoading];造成了延迟吗?你能评论一下,然后检查它是否运行顺利 -
@InderKumarRathore :刚刚检查过。 stopLoading 会停止 webview,但仍然需要一些时间才能停止。
-
我要求评论这一行,看看是否有一些滞后?
-
@InderKumarRathore :如果我评论 stopLoading,延迟会增加。
-
使用 Time Profiler 运行您的应用程序,以确保瓶颈在您认为的位置以及代码的哪一部分触发它。您还可以发布您如何加载网络视图吗?只是想放弃这是多线程问题的可能性。
标签: ios uiviewcontroller uiwebview