iOS新浪微博联合登陆sdk3.0.0的present webView bug解决思路

之前在公司负责整个客户端的联合登陆,在加入微博的联合登录时遇到了一个问题,因为注册登陆界面本身就是present出来的,所以,当本地没有安装微博客户端时,不能present出微博的webview登陆页面
看了一下报错:Attempt to present <UINavigationController: > on <RootViewController: > whose view is not in the window hierarchy!
原因大概就是直接拿keyWindow的rootViewController来presentViewController
但是我已经弹了个模态登陆/注册Controller了。。。。
当时给他们反馈了,说是会在3月中旬出新的版本解决,但最后在三月还没出。
最后想了两个方案来解决这个问题:
1.把我本地的注册登陆页面改一个展现方式,用addChildViewController来展示,即自己来写一个
- (void)presentChildViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;
再实现一个将childViewCOntroller移除
-(void)removeViewController:(UIViewController *)viewController

2.另外一个思路就是它调用的是rootVIewController 的- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
那我们Hacky一下它,如果现在的栈顶VC有presentedVC则循环来找到最顶部presentedVC来present微博的webview
如果栈顶VC没有presentedVC 则调用super 的 present 方法

最后两个方法可以解决该问题,只是简单提供思路,抛砖引玉
以上~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容