【问题标题】:UIWebView still active after pressing back button按下后退按钮后 UIWebView 仍然处于活动状态
【发布时间】:2014-03-14 12:04:41
【问题描述】:

我正在使用 Navigationcontroller 每次单击链接时都会推送一个包含 Webview 的新 Viewcontroller。其中一个 URL 有一个 javascript 函数,它每 60 秒调用另一个函数。它工作正常,但是当我在该 web 视图(包含 javascript)后点击一次后退按钮时,webview 保持活动状态并继续执行 javascript 调用,同时完美地返回到以前的 webview。我可以通过 NSLog 看到它在做事。为什么会这样?如何避免?

编辑:

我在 Viewcontroller 中声明了 UIWebView 的子类,如下所示:

@property (strong, nonatomic) AFXTWebView *wv;

这就是我实例化它的方式(在 ViewDidLoad 中):

    [self setWv:[[AFXTWebView alloc] initWithVC:self andURLString:[self.pageConfig objectForKey:xAFXTPageLink]]];

    [self.view addSubview:self.wv];    

    [self.wv loadWebView];

我也尝试在 viewWillDisappear 中将 webView 设置为 nil:

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.wv = nil;
}

【问题讨论】:

    标签: ios objective-c uiwebview uinavigationcontroller


    【解决方案1】:

    您必须使用 viewWillAppear 和 viewWillDisappear 方法

    -(void)viewWillAppear:(BOOL)animated
    {
    _webView=[[UIWebView alloc]init];
    ......//do your stuff
    }
    
    
    -(void)viewWillDisappear:(BOOL)animated
    {
    [_webView removeFromSuperView];
    _webView=nil;
    }
    

    【讨论】:

    • 您的 AFXTWebView 是否在队列/NSOperation/blocks 上执行任何操作?
    • 不,我没有做类似的事情 :-(。removeFromSuperView 也不起作用,除了在导航返回时显示空白页。
    • 我仍然不知道 AFXTWebview 类发生了什么
    • 只是UIWebView的一个子类,没什么特别的。
    【解决方案2】:

    在您的viewWillDisappear 中将空白页面加载到网络视图中。

    【讨论】:

      【解决方案3】:

      这听起来你的 web 视图和视图控制器没有被释放,即你有泄漏。您应该检查您的代码中是否存在对您的视图控制器或 Web 视图的任何未发布的保留/强引用。

      【讨论】:

      • 是的,这就是我认为的问题所在。但我就是想不通:-(。我已经更新了我的答案,所以你可以看到我是如何实例化 Webview 的。对此有什么想法吗?谢谢
      • AFXTWebView 类是否存储了对视图控制器的强引用?
      • 是的,我把它作为一个强有力的参考
      • 那听起来像你的问题。如果两个对象都具有相互强引用(视图控制器 Web 视图),则两者都不会被释放。让你的 web 视图对视图控制器的引用变弱,看看是否能解决问题。
      • 我试过这个,但是我的 webview 总是保持白色,没有显示任何内容
      【解决方案4】:
      -(void)viewDidDisappear:(BOOL)animated
      {
        [super viewDidDisappear:animated];
        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        • 1970-01-01
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多