diff --git a/.github/actions/uitests/action.yml b/.github/actions/uitests/action.yml index 26849353f..9649db0ab 100644 --- a/.github/actions/uitests/action.yml +++ b/.github/actions/uitests/action.yml @@ -25,8 +25,7 @@ runs: run: | cd Example xcodebuild test \ - -scheme OpenSwiftUIUITests \ - -configuration SwiftUIDebug \ + -scheme SUI_UITests \ -destination "${{ inputs.destination }}" \ -skipMacroValidation \ -skipPackagePluginValidation || true @@ -38,8 +37,7 @@ runs: run: | cd Example xcodebuild test \ - -scheme OpenSwiftUIUITests \ - -configuration OpenSwiftUIDebug \ + -scheme OSUI_UITests \ -destination "${{ inputs.destination }}" \ -skipMacroValidation \ -skipPackagePluginValidation 2>&1 | tee /tmp/${{ inputs.platform }}-uitest.log diff --git a/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.h b/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.h index 4de279863..bf3f753f3 100644 --- a/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.h +++ b/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.h @@ -77,6 +77,10 @@ OPENSWIFTUI_ASSUME_NONNULL_BEGIN @end #endif +@interface UIWindow (OpenSwiftUI_SPI) +@property (nonatomic, readonly, nullable) UIWindowScene *_windowHostingScene_openswiftui_safe_wrapper OPENSWIFTUI_SWIFT_NAME(_windowHostingScene); +@end + @interface UIWindowScene (OpenSwiftUI_SPI) @property (nonatomic, readonly) UIUserInterfaceStyle _systemUserInterfaceStyle_openswiftui_safe_wrapper OPENSWIFTUI_SWIFT_NAME(_systemUserInterfaceStyle); #if OPENSWIFTUI_LINK_BACKLIGHTSERVICES diff --git a/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.m b/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.m index 5d5889e97..a5771bf0a 100644 --- a/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.m +++ b/Sources/COpenSwiftUI/Shims/UIKit/UIKit_Private.m @@ -95,6 +95,13 @@ - (CGFloat)_pointsPerInch_openswiftui_safe_wrapper { @end #endif +@implementation UIWindow (OpenSwiftUI_SPI) +- (UIWindowScene *) _windowHostingScene_openswiftui_safe_wrapper { + OPENSWIFTUI_SAFE_WRAPPER_IMP(UIWindowScene *, @"_windowHostingScene", nil); + return func(self, selector); +} +@end + @implementation UIWindowScene (OpenSwiftUI_SPI) - (UIUserInterfaceStyle) _systemUserInterfaceStyle_openswiftui_safe_wrapper { OPENSWIFTUI_SAFE_WRAPPER_IMP(UIUserInterfaceStyle, @"_systemUserInterfaceStyle", UIUserInterfaceStyleUnspecified); diff --git a/Sources/OpenSwiftUI/Integration/Hosting/UIKit/View/UIHostingViewBase.swift b/Sources/OpenSwiftUI/Integration/Hosting/UIKit/View/UIHostingViewBase.swift index a09f9f8aa..ca36352b5 100644 --- a/Sources/OpenSwiftUI/Integration/Hosting/UIKit/View/UIHostingViewBase.swift +++ b/Sources/OpenSwiftUI/Integration/Hosting/UIKit/View/UIHostingViewBase.swift @@ -115,11 +115,9 @@ package class UIHostingViewBase { @inline(__always) package var sceneActivationState: UIScene.ActivationState? { get { - let selector = Selector(("_windowHostingScene")) guard let uiView, let window = uiView.window, - window.responds(to: selector), - (window.perform(selector).takeUnretainedValue() as? UIWindowScene) != nil + window._windowHostingScene != nil else { return nil }