(为了阻止善意的建议,是的,我上周在 Facebook 的开发者论坛上发布了这个问题。还没有回复。)
TL; 博士
Facebook SDK 5.8 在启动时抱怨FBSDKLog: Unable to find a valid UIWindow
。
主要故事
在从头开始的单一视图 Xcode 11/iOS 13 项目中,不再有与应用程序关联的默认UIWindow
成员。(窗口本身仍然存在;您可以UIWindowScene
使用 Xcode 中的 View Hierarchy Debugger 或 Reveal 应用程序看到它,包含在 a 中。)
FBSDK 5.8 似乎支持 iOS-13,并四处寻找。相关代码在第 498 行
Facebook 的代码遍历应用程序的connectedScenes
成员,这对我来说是一个空集。如何修改我的代码以便 FBSDK 找到窗口?
一些黑客
我尝试添加以下内容,scene(_:willConnectTo:options:)
但似乎为时已晚 — FBSDKLog 消息此时已经出现。(所以我在挣扎……)
guard let s = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: s)
Run Code Online (Sandbox Code Playgroud)
以下也失败了,但这只是黑暗中的一个镜头:
guard let s …
Run Code Online (Sandbox Code Playgroud) 我想摆脱我的函数中的“‘windows’在 iOS 15.0 中已弃用:在相关窗口场景上使用 UIWindowScene.windows”消息(顺便说一下,我的函数运行得很好。)。
涉及的代码行:
banner.rootViewController = UIApplication.shared.windows.first?.rootViewController
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我的职能:
struct AdView : UIViewRepresentable {
func makeUIView(context: UIViewRepresentableContext<AdView>) -> GADBannerView {
let banner = GADBannerView(adSize: kGADAdSizeBanner)
banner.adUnitID = "ca-app-pub-3940256099942544/2934735716" // test ad
banner.rootViewController = UIApplication.shared.windows.first?.rootViewController
banner.load(GADRequest())
return banner
}
func updateUIView(_ uiView: GADBannerView, context: UIViewRepresentableContext<AdView>) {}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过,但它不起作用:
banner.rootViewController = UIApplication.shared.connectedScenes.first?.rootViewController
Run Code Online (Sandbox Code Playgroud)
谢谢
目前,在 iOS 14.6 中,我可以使用以下代码在我的应用程序中调用一个显示共享表的函数:
func share(link: URL) {
let activityView = UIActivityViewController(activityItems: [link], applicationActivities: nil)
UIApplication.shared.windows.first?.rootViewController?.present(activityView, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
自 iOS 15 测试版以来,Xcode 告诉我“'windows' 在 iOS 15.0 中已弃用:在相关的窗口场景中使用 UIWindowScene.windows”。我如何更新它,以便我的共享表可以在这个新版本中正常工作?谢谢!
我正在 iPad 应用程序的 Mac Catalyst 版本中打开多个场景。问题是所有窗口都只是在每个窗口标题中显示我的应用程序名称。这使得查看“窗口”菜单中的窗口列表变得混乱。另外,我希望特定信息出现在应用程序名称旁边的窗口标题中。
UIWindowScene 有一个很有前途的 Mac Catalyst 属性,名为titleBar
type UITitleBar
。听起来很有希望,但它与设置任何类型的标题无关。奇怪的。
我在UIWindowScene
或UIWindow
类或任何与场景相关的东西中找不到任何东西。
我也试过设置title
窗口的rootViewController
. 那没有效果。我还尝试了representedURL
属性的各种值,UITitlebar
但这些值用于更改标题以外的其他事情。
有没有办法在 Mac Catalyst 应用程序中设置窗口的标题?