From 572249f6bbbb872e8eeed536830fb7d83f5adb6f Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 29 Jul 2026 00:37:04 +0800 Subject: [PATCH 1/2] Fix UIFoundation selectors --- .../OpenSwiftUI_SPI/Shims/UIFoundation/NSAttributedString.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/OpenSwiftUI_SPI/Shims/UIFoundation/NSAttributedString.m b/Sources/OpenSwiftUI_SPI/Shims/UIFoundation/NSAttributedString.m index c32bae257..a7b09852d 100644 --- a/Sources/OpenSwiftUI_SPI/Shims/UIFoundation/NSAttributedString.m +++ b/Sources/OpenSwiftUI_SPI/Shims/UIFoundation/NSAttributedString.m @@ -22,7 +22,7 @@ - (instancetype)initOpenSwiftUIAttributedStringWithFormat:(NSAttributedString *) } - (NSAttributedString *)_ui_attributedSubstringFromRange_openswiftui_safe_wrapper:(NSRange)range scaledByScaleFactor:(CGFloat)factor { - OPENSWIFTUI_SAFE_WRAPPER_IMP(NSAttributedString *, @"_ui_attributedSubstringFromRange:scaledByScaleFactor", nil, NSRange, CGFloat); + OPENSWIFTUI_SAFE_WRAPPER_IMP(NSAttributedString *, @"_ui_attributedSubstringFromRange:scaledByScaleFactor:", nil, NSRange, CGFloat); return func(self, selector, range, factor); } @@ -31,7 +31,7 @@ - (NSAttributedString *)_ui_attributedSubstringFromRange_openswiftui_safe_wrappe @implementation NSMutableAttributedString (OpenSwiftUI_SPI) - (BOOL)isEmptyOrTerminatedByParagraphSeparator_openswiftui_safe_wrapper { - OPENSWIFTUI_SAFE_WRAPPER_IMP(BOOL, @"isEmptyOrTerminatedByParagraphSeparator:scaledByScaleFactor", false); + OPENSWIFTUI_SAFE_WRAPPER_IMP(BOOL, @"isEmptyOrTerminatedByParagraphSeparator", false); return func(self, selector); } From 5eeaafd18f353092dc4dea93c76fcb71e77cc353 Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 29 Jul 2026 01:00:01 +0800 Subject: [PATCH 2/2] Fix UIKit selector dispatch --- .../Overlay/UIKit/OpenSwiftUI+UIApplication.m | 15 ++++----------- .../UIKit/OpenSwiftUITesting_Swizzles+UIKit.m | 2 +- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUI+UIApplication.m b/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUI+UIApplication.m index 000870b61..eb05a817c 100644 --- a/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUI+UIApplication.m +++ b/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUI+UIApplication.m @@ -6,22 +6,15 @@ // Status: Complete #include "OpenSwiftUI+UIApplication.h" +#include "Shims/OpenSwiftUIShims.h" #if OPENSWIFTUI_TARGET_OS_IOS || OPENSWIFTUI_TARGET_OS_VISION #include UIContentSizeCategory _UIApplicationDefaultContentSizeCategory() { - typedef UIContentSizeCategory (*Func)(Class, SEL); - SEL selector = NSSelectorFromString(@"_defaultContentSizeCategory"); - Func func = nil; - if ([UIApplication resolveClassMethod:selector]) { - IMP impl = class_getMethodImplementation(UIApplication.class, selector); - func = (Func)impl; - } - if (func == nil) { - return UIContentSizeCategoryLarge; - } - return func(UIApplication.class, selector); + Class self = UIApplication.class; + OPENSWIFTUI_SAFE_WRAPPER_IMP(UIContentSizeCategory, @"_defaultContentSizeCategory", UIContentSizeCategoryLarge); + return func(self, selector); } #endif /* OPENSWIFTUI_TARGET_OS_IOS || OPENSWIFTUI_TARGET_OS_VISION */ diff --git a/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUITesting_Swizzles+UIKit.m b/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUITesting_Swizzles+UIKit.m index 2dc4231c4..82ad8ce09 100644 --- a/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUITesting_Swizzles+UIKit.m +++ b/Sources/COpenSwiftUI/Overlay/UIKit/OpenSwiftUITesting_Swizzles+UIKit.m @@ -30,7 +30,7 @@ - (BOOL)_OpenSwiftUITesting_wantsWideContentMargins { @implementation UICollectionView (OpenSwiftUITesting_Swizzles) + (void)_performOpenSwiftUITestingOverrides { #if !OPENSWIFTUI_TARGET_OS_VISION - _SwizzleMethods(UIScreen.class, @selector(_viewAnimationsForCurrentUpdateWithCollectionViewAnimator:), @selector(_OpenSwiftUITesting__viewAnimationsForCurrentUpdateWithCollectionViewAnimator:)); + _SwizzleMethods(UICollectionView.class, @selector(_viewAnimationsForCurrentUpdateWithCollectionViewAnimator:), @selector(_OpenSwiftUITesting__viewAnimationsForCurrentUpdateWithCollectionViewAnimator:)); #endif }