KS
KS
  • 发布:2015-12-20 20:37
  • 更新:2017-04-15 02:27
  • 阅读:6846

IOS 反复切换界面的时候,会出现白屏

分类:5+ SDK

我是通过以下方法打开界面的
-(void)ShowAppByID:(NSString) appID htmlName:(NSString)htmlName
{
NSString* pAppPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Pandora/apps/"];

NSString* pWWWPath;  
self.view.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight);  
PDRCore *core = [PDRCore Instance];  
[core setContainerView:_containerView];  
[core startAsAppClient];  

pWWWPath = [NSString stringWithFormat:@"%@/%@/www", pAppPath, appID];  
_pWWWPath = pWWWPath;  
_htmlName = htmlName;  
[[[PDRCore Instance] appManager] openAppAtLocation:pWWWPath withIndexPath:_htmlName withArgs:nil withDelegate:nil];  

}
但是把界面退出去后,再进来,反复几次,就会出现白屏,不知道是什么原因,请解哈?

2015-12-20 20:37 负责人:无 分享
已邀请:
DCloud_IOS_XTY

DCloud_IOS_XTY

未发现有该问题,请提供下可以重现问题的demo

  • KS (作者)

    我已经把 DEMO 发上来了,请看一下

    2015-12-22 20:07

KS

KS (作者)

先点击 demo 中的 four 按钮,再点 three 按钮,就会出现白屏现象。 麻烦看一下是什么原因,谢谢!

  • DCloud_IOS_XTY

    我用你的demo试了没有问题啊请使用最新SDK试试

    2015-12-23 16:28

  • KS (作者)

    回复 DCloud_IOS_XTY:我用的就是你们2012-12-15日发布的SDK,应该是最新的吧?先点 one,再点three, 白屏必现的。请看下面的图片。

    2015-12-23 17:13

  • DCloud_IOS_XTY

    如果已经使用了startAsAppClient, 不需要在调用startAsWebClient了,startAsAppClient调用一次,最好不要重复调用, 也就是说appclient模式是支持webclient模式的

    2015-12-23 18:41

  • KS (作者)

    回复 DCloud_IOS_XTY:我的代码里面,没有出现startAsWebClient啊。startAsWebClient 和 startAsAppClient 这两个调其中的一个,这个我是知道的。但是退出去再进来,肯定要再调一次吧。

    2015-12-23 18:49

  • DCloud_IOS_XTY

    one中调用了startAsWebClient three中调用了startAsAppClient

    2015-12-24 13:00

  • KS (作者)

    回复 DCloud_IOS_XTY:我把one 中的startAsWebClient 改成了startAsAppClient,也会出现白屏的现象。

    2015-12-24 14:23

  • DCloud_IOS_XTY

    在QQ上交流吧

    2015-12-24 16:35

  • KS (作者)

    回复 DCloud_IOS_XTY:如果出现白屏,我们有没有办法拿到当前白屏的状态哈?

    2015-12-24 17:58

KS

KS (作者)

白屏截图

KS

KS (作者)

这个问题解决了,原因是在不断退出H5应用,再进去之后,引擎的WEBVIEW 有时候没有加到当前控制器的view上,这个BUG 需要你们再看一下,哪里出问题了。下面是我的解决方法:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finish:) name:PDRCoreAppFrameDidLoadNotificationKey object:nil]; //注册这个通过

//触发通知的方法

  • (void)finish:(NSNotification *)notification
    {
    NSLog(@"DCLOUD finish");
    NSLog(@"%ld -----:",_containerView.subviews.count);
    if (_containerView.subviews.count == 0) {
    [_containerView addSubview:_app.mainFrame.webView];
    }
    }
七爷爱靓妹

七爷爱靓妹

Great 完美解决!

  • 1***@qq.com

    你好 , 这跳转界面 。怎么解决的 可以沟通下嘛

    2017-04-20 17:48

  • 七爷爱靓妹

    不好意思,太久没上来了。我就是按上面KS发的解决办法搞定的。

    2018-06-08 18:01

该问题目前已经被锁定, 无法添加新回复