gpt4 book ai didi

ios - 在两个 UIWindows 之间切换

转载 作者:可可西里 更新时间:2023-11-01 04:53:26 24 4
gpt4 key购买 nike

我正在集成用于推送通知的 Pushwoosh SDK,它使用 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 页面时调用我的 View Controller 。所以我尝试在这个 block 完成中呈现 myviewcotrlller 但没有呈现。

实际上这里的问题是我的应用程序中有两个 UIWindows,一个是应用程序,另一个是 sdk 使用的。现在,如果我尝试从这个位于单独 UIWindow 上的 html 页面呈现 View Controller ,那么它会创建一个单独的层次结构,并且当我关闭此窗口时,由于父子关系,也会删除我呈现的 viewconroller。如果不关闭此窗口,那么如何返回到应用程序的实际流程。

我希望新 Controller 应该从那个新窗口显示出来,然后关闭那个窗口并且应用程序的流程不应受到其他窗口的影响。可能吗?如果我的概念是错误的,请有想法的人帮助

编辑:第二个 uiwindow 从来不是关键窗口,它只有通过设置更高的 windowlevel 才可见并隐藏

最佳答案

问题是在这个完成 block 之后 richPushWindow 将消失,实际上这意味着您正在尝试在隐藏窗口上显示 View Controller 。

解决方法很简单。使用主窗口来呈现 View Controller 。一些伪代码:

从 ViewContoller 添加 View 到主窗口 subview :

  1. [appDelegate.window addSubview:myViewController.view];

模态:

  1. [appDelegate.window.rootViewController presentModalViewController:myViewController]

使用 View Controller 层次结构:

  1. 将您的 viewController 推送到主 viewController 堆栈。例如,如果您有 navigationController,只需将它推到那里即可。

希望对您有所帮助!

关于ios - 在两个 UIWindows 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com