Repository navigation
[UIKit] Bind new Xcode 27 (iOS 27) UIKit APIs - #25889
Conversation
Resolve the UIKit entries in the iOS/tvOS/MacCatalyst .todo files for Xcode 27: - NSTextBlock/NSTextTable/NSTextTableBlock + TextKit enums, and enable NSParagraphStyle/NSMutableParagraphStyle.textBlocks on UIKit platforms (remove the dummy NSTextBlock/NSTextTableBlock aliases in xkit.cs). - Scene accessories (UISceneAccessory, UISceneAccessoryRegistration), UISceneClosureConfirmation, UISceneConfiguration init/initWithName:, UIWindowScene display-link/closure-confirmation, and the window-scene delegate supportedInterfaceOrientationsForWindowScene:. - UIMenuElement/UIMenuLeaf image visibility + highlight handler. - UIBarButtonItem visibility priority/padding, UINavigationItem bar minimize, UIContextMenuConfiguration.allowsTypeSelect, UIDragInteraction lift behavior. - UITab/UITabGroup/UITabBarController/sidebar updates and UISearchTab static identifier. - UITextView NSTextViewportLayoutControllerDelegate conformance + viewport members, UIPhotoSearchSuggestion, UITextChecker grammar checking, plus the deprecation attributes for the supportedInterfaceOrientationsForWindow and UIScreen display-link APIs. UIView CLBodyIdentifiable/CMBodyIdentifiable conformances are intentionally deferred: they require binding the new CoreLocation/CoreMotion marker protocols, tracked in those frameworks' own .todo files. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| } | ||
|
|
||
| // NSInteger -> NSTextTable.h | ||
| [TV (9, 0), iOS (6, 0), MacCatalyst (13, 1)] |
There was a problem hiding this comment.
These availability attributes are redundant (except the MacCatalyst one maybe), but there should be a cecil test that catches this.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
- Drop the redundant [TV (9, 0), iOS (6, 0)] from the five NSTextBlock UIKit enums and keep only [MacCatalyst (13, 1)]: iOS 6 / tvOS 9 are below the minimum deployment targets, so those versions are stripped anyway. - Mark NSTextBlock.backgroundColor and setBorderColor: as [NullAllowed] on every platform (both the AppKit and UIKit NSTextTable.h headers declare them nullable) and remove the now-obsolete macOS-AppKit.ignore !missing-null-allowed! suppressions for them. - Replace the #if MONOMAC guards around the macOS-only members with [NoiOS, NoTV, NoMacCatalyst] (adding a `using NSRectEdge = System.Object` alias for the non-macOS build) and collapse the redundant protocol-list #if down to `NSSecureCoding, NSCopying`. The macOS generated code is unchanged (NSSecureCoding already implies NSCoding). - Mark the UIBarMinimizeBehavior (Never/OnScrollDown/OnScrollUp) and UIBarMinimizationSafeAreaAdjustment (Enabled/Disabled) enum values as [NoTV] to match the native API_UNAVAILABLE(tvos) annotations. The enum types and the UINavigationItem properties that use them remain available on tvOS (only the non-Automatic values are tvOS-unavailable), which xtro was reporting as !extra-enum-value!. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
|
||
| //Detected properties | ||
| [Export ("numberOfColumns")] | ||
| #if MONOMAC |
There was a problem hiding this comment.
Not blocking, but maybe we can unite the platforms in the future?
| #if MONOMAC | |
| #if MONOMAC && !XAMCORE_5_0 |
| [TV (27, 0), iOS (27, 0), MacCatalyst (27, 0)] | ||
| [Async] | ||
| [Export ("requestGrammarCheckingOfString:range:waitForAllResults:completionHandler:")] | ||
| void RequestGrammarChecking (string stringToCheck, NSRange range, bool waitForAllResults, [NullAllowed] UITextCheckerGrammarCompletionHandler completionHandler); |
There was a problem hiding this comment.
Unrelated question: would there be any benefit to using this method in introspection's typo test?
…umns in XAMCORE_5_0 UITextView's conformance to NSTextViewportLayoutControllerDelegate is only registered by the runtime starting with iOS 27.0 / tvOS 27.0 / Mac Catalyst 27.0 (the delegate methods are all API_AVAILABLE(ios(27.0), tvos(27.0))). The introspection iOSApiProtocolTest.GeneralCase failed on iOS 16.0 and tvOS 16.0 because the previous skip only covered Mac Catalyst (which happened to be tested on 26.4). Replace it with a version-gated skip that applies to all platforms (return !TestRuntime.CheckXcodeVersion (27, 0)), matching the existing ARObjectAnchor/ARTrackable "started with iOS 27.0" precedent. On OS 27.0+ the conformance is registered (verified on iOS/tvOS/Mac Catalyst 27), so the check still runs there. Also guard the macOS-only NSTextTable.Columns property name with `#if MONOMAC && !XAMCORE_5_0` so the next major release unites the property name across platforms as NumberOfColumns (per review feedback). This is a no-op for the current build. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
✅ [PR Build #aa4e075] Build passed (Detect API changes) ✅Pipeline on Agent |
✅ [PR Build #aa4e075] Build passed (Build packages) ✅Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
✅ [PR Build #aa4e075] Build passed (Build macOS tests) ✅Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
🚀 [CI Build #aa4e075] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 196 tests passed 🎉 Tests counts✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
Resolve the UIKit entries in the iOS/tvOS/MacCatalyst .todo files for Xcode 27:
UIView CLBodyIdentifiable/CMBodyIdentifiable conformances are intentionally deferred: they require binding the new CoreLocation/CoreMotion marker protocols, tracked in those frameworks' own .todo files.