我正在整合Pushwoosh SDK for Push Notification,它使用UIWindow
来表示从Pushwoosh门户网站发送的HTML页面
- (void) showWebView {
self.richPushWindow.alpha = 0.0f;
self.richPushWindow.windowLevel = UIWindowLevelStatusBar + 1.0f;
self.richPushWindow.hidden = NO;
self.richPushWindow.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.3 animations:^{
self.richPushWindow.transform = CGAffineTransformIdentity;
self.richPushWindow.alpha = 1.0f;
} completion:^(BOOL finished) {
}];
}
- (void) showPushPage:(NSString *)pageId {
NSString *url = [NSString stringWithFormat:kServiceHtmlContentFormatUrl, pageId];
HtmlWebViewController *vc = [[HtmlWebViewController alloc] initWithURLString:url];
vc.delegate = self;
vc.supportedOrientations = supportedOrientations;
self.richPushWindow.rootViewController = vc;
[vc view];
}
在关闭HTML页面时,它会调用
self.richPushWindow.transform = CGAffineTransformIdentity;
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
self.richPushWindow.transform = CGAffineTransformMakeScale(0.01, 0.01);
self.richPushWindow.alpha = 0.0f;
} completion:^(BOOL finished) {
AppDelegate * appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
self.richPushWindow.hidden = YES;
}];
现在我想在关闭此HTML页面时调用我的视图控制器。所以我尝试在此块完成中提供myviewcotrlller
但不提示。
实际上这里的问题是我的应用程序中有两个UIWindows,其中一个是应用程序,另一个是由sdk使用的。现在,如果我尝试从单独的UIWindow上的这个html页面呈现视图控制器,那么它会创建一个单独的层次结构,当我关闭此窗口时,由于父子关系也会删除我呈现的viewconroller。如果不关闭此窗口,那么如何回到app的实际流程。
我希望新控制器应该从该新窗口显示,并且该窗口应该关闭,应用程序流不应受其他窗口的影响。可能吗?如果我的观点有误,请帮助,如果有人有想法
编辑:第二个uiwindow永远不是关键窗口,只有通过设置更高的windowlevel并变为隐藏才能看到它
答案 0 :(得分:1)
问题是,在完成块之后,richPushWindow将会消失,实际上这意味着您正试图在隐藏窗口上显示视图控制器。
解决方案非常简单。使用主窗口显示视图控制器。一些伪代码:
将ViewContoller中的视图添加到主窗口子视图中:
模态:
使用View Controller层次结构:
我希望它有所帮助!