UIWebthreadlock冻结应用程序

时间:2012-05-22 12:29:08

标签: ios uiview uiwebview

我有一个视图,我提出了两个不同的uiwebviews(从本地html加载)。每当用户点击位于导航栏中的按钮时,我就会从一个网页视图切换到另一个网页视图动画(卷曲并向下卷曲)。一切似乎工作正常,但有时当用户点击该按钮时应用程序冻结。在大多数情况下,当我依次点击按钮直到应用程序冻结时应用程序冻结,然后我暂停调试,我得到了这个:

enter image description here

self.navigationItem.titleView.userInteractionEnabled = NO; //Disable button interaction until animation is finished

 if (self.isVisibleFrontView) 
    {
    self.isVisibleFrontView = NO;

    [UIView transitionWithView:self.view
                      duration:0.5
                       options:UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionCurveEaseInOut
                    animations:^{
                        [[[self.view subviews] objectAtIndex:0] removeFromSuperview];
                        [self.view addSubview:self.patientViewReverse];

                    }
                    completion:^(BOOL finished){
                        self.navigationItem.titleView.userInteractionEnabled = YES;
                    }];
}
else 
{

    self.isVisibleFrontView = YES;

    [UIView transitionWithView:self.view
                      duration:0.5
                       options:UIViewAnimationOptionTransitionCurlDown | UIViewAnimationOptionCurveEaseInOut
                    animations:^{
                        [[[self.view subviews] objectAtIndex:0] removeFromSuperview];
                        [self.view addSubview:self.patientView];

                    }
                    completion:^(BOOL finished){
                            self.navigationItem.titleView.userInteractionEnabled = YES;

                    }];

}
[self showNavigationBarButtons]; //change button image
}

我认为webView在removeFromSuperview时获取锁定但在某些情况下永远不会释放它,从而导致主线程冻结。你怎么看?在不冻结应用程序的情况下实现此目标的最佳方法是什么?

先谢谢你们。

1 个答案:

答案 0 :(得分:0)

最后我修好了。

现在我所做的只是setHidden:是我不想显示的webview和setHidden:没有动画块中的其他webview,而不是每次都删除并添加webview视图。这样效率更高,webview不使用webthreadlock。