延迟applicationDidEnterBackground屏幕截图

Pet*_*rbo 5 cocoa-touch objective-c ios

当应用程序进入后台时,有没有办法延迟iOS制作的屏幕截图?原因是我有时会在用户进入主屏幕时显示视图我希望删除此视图,以便在恢复应用时不显示.有问题的观点是 SSHUDView(源代码在这里),我称之为dismissAnimated:NOapplicationWillResignActive.这实际上适用于模拟器,但不适用于真实设备(SSHUDView恢复时仍显示).任何人都知道如何处理这个?

fgu*_*aar 15

我认为你应该处理这个问题applicationDidEnterBackground:.

根据Apple的文档:

  • 准备拍照.applicationDidEnterBackground:方法返回时,系统会拍摄应用程序用户界面的图片,并将生成的图像用于过渡动画.如果界面中的任何视图包含敏感信息,则应在applicationDidEnterBackground:方法返回之前隐藏或修改这些视图.


And*_*law 2

如果您看一下SSHUDView实现,它使用一个UIWindow实例来显示内容;它使它自己的 UIWindow 成为关键UIWindow

[_hudWindow makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

这可能就是为什么它如此难以摆脱的原因。您可以尝试SSHUDView在它自行消失后执行以下操作以将焦点返回到主窗口:

[[[[UIApplication sharedApplication] windows] objectAtIndex:0] makeKeyWindow];
Run Code Online (Sandbox Code Playgroud)

当 hud 视图自行关闭时,它会发送resignKeyWindow到它的私有_hudWindow对象,您可以在将焦点返回到主窗口之前尝试获取该对象的句柄,如下所示:

[[[[UIApplication sharedApplication] windows] objectAtIndex:1] resignKeyWindow];
Run Code Online (Sandbox Code Playgroud)

但它可能会导致意想不到的问题,因为你绕过了SSHUDViewAPI......