如何在iOS应用程序中以编程方式检测SwiftUI的使用

3

我正在开发一个适用于iOS的库,需要知道使用该库的应用是否在运行SwiftUI,以便我可以适当地处理事务。

在Objective-C中有没有一种程序化的方式可以找出这个问题呢?


你的代码中使用了什么依赖于外部用户语言的内容? - Mojtaba Hosseini
我们的产品有一些功能在SwiftUI中尚未运作,所以我想记录一条消息告诉用户检测到了SwiftUI,并且不是所有功能都能正常工作。此外,我们有时会在应用程序中显示叠加层,如果我检测到SwiftUI,最终也希望显示一个SwiftUI的叠加层。 - turnipinrut
另外,我不是在询问编程语言,而是特别询问UI框架“SwiftUI”,而不仅仅是Swift语言。 - turnipinrut
如果您正在使用 UIViewRepresentableUIViewControllerRepresentable,请将日志记录代码放在那里。 - Yonat
我认为最可靠的方法是检查rootViewController是否为UIHostingController类型。(注意:我不确定如何做到这一点。)UIKit应用通常有一个Storyboard,但很容易移除。此外,对于UIKit应用程序,info.plist中有一个名为UIMainStoryboardFile的键 - 但同样,我不确定这是否像检查UIHostingController那样可靠。而且请记住,在Xcode 12中可能会发生变化。 - user7014451
1个回答

0

最终我做了这个。

  1. 获取应用程序的根或关键窗口。

  2. 检查其类名是否包含“UIHostingController”。

  3. 还要对此进行nil检查:NSClassFromString(@“SwiftUI._UIGraphicsView”)

您还可以检查其他Swift UI类,但到目前为止,这已经涵盖了所有情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接