Skip to content

UIKit tvOS xcode15.3 b1

Alex Soto edited this page Jul 9, 2024 · 2 revisions

#UIKit.framework https://github.com/xamarin/xamarin-macios/pull/20780

diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/NSItemProvider+UIKitAdditions.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/NSItemProvider+UIKitAdditions.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/NSItemProvider+UIKitAdditions.h	2023-11-12 03:43:27
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/NSItemProvider+UIKitAdditions.h	2024-01-19 07:22:59
@@ -43,6 +43,25 @@
 
 @end
 
+@protocol UIItemProviderReadingAugmentationProviding
+// Conforming classes should not fall through to [requestedClass objectWithItemProviderData:typeIdentifier:error:.
+// UIItemProvider does this on your behalf.
++ (nullable id)objectWithItemProviderData:(NSData *)data
+                           typeIdentifier:(NSString *)typeIdentifier
+                           requestedClass:(Class)requestedClass
+                                    error:(NSError **)outError;
+// Conforming classes should not fall through to -readableTypeIdentifiersForItemProvider of the original NSItemProviderReading clas.
+// UIItemProvider does this on your behalf.
+@property (class, NS_NONATOMIC_IOSONLY, readonly, copy) NSArray<NSString *> *additionalLeadingReadableTypeIdentifiersForItemProvider;
+@property (class, NS_NONATOMIC_IOSONLY, readonly, copy) NSArray<NSString *> *additionalTrailingReadableTypeIdentifiersForItemProvider;
+
+@end
+
+@protocol UIItemProviderReadingAugmentationDesignating <NSItemProviderReading>
++ (Class<UIItemProviderReadingAugmentationProviding>)_ui_augmentingNSItemProviderReadingClass;
+@end
+
+
 NS_HEADER_AUDIT_END(nullability, sendability)
 
 #else
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h	2023-11-12 03:43:26
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h	2024-01-19 04:12:02
@@ -112,6 +112,9 @@
 /// Removes the action with the provided identifier from the set of passed control events.
 - (void)removeActionForIdentifier:(UIActionIdentifier)actionIdentifier forControlEvents:(UIControlEvents)controlEvents API_AVAILABLE(ios(14.0));
 
+/// Performs the control's primary action.
+- (void)performPrimaryAction API_AVAILABLE(ios(17.4));
+
 // get info about target & actions. this makes it possible to enumerate all target/actions by checking for each event kind
 @property(nonatomic,readonly) NSSet *allTargets;                                           // set may include NSNull to indicate at least one nil target
 @property(nonatomic,readonly) UIControlEvents allControlEvents;                            // list of all events that have at least one action
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDatePicker.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDatePicker.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDatePicker.h	2023-11-12 03:43:24
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDatePicker.h	2024-01-19 07:28:52
@@ -13,10 +13,16 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 typedef NS_ENUM(NSInteger, UIDatePickerMode) {
-    UIDatePickerModeTime,           // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)
-    UIDatePickerModeDate,           // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)
-    UIDatePickerModeDateAndTime,    // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
-    UIDatePickerModeCountDownTimer, // Displays hour and minute (e.g. 1 | 53)
+    /// Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)
+    UIDatePickerModeTime,
+    /// Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)
+    UIDatePickerModeDate,
+    /// Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
+    UIDatePickerModeDateAndTime,
+    /// Displays hour and minute (e.g. 1 | 53); only supported in `UIDatePickerStyleWheels`
+    UIDatePickerModeCountDownTimer,
+    /// Displays year and month depending on the locale setting (e.g. March | 2024); only supported in `UIDatePickerStyleWheels`
+    UIDatePickerModeYearAndMonth API_AVAILABLE(ios(17.4)),
 } API_UNAVAILABLE(tvos);
 
 typedef NS_ENUM(NSInteger, UIDatePickerStyle) {
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDragItem.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDragItem.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDragItem.h	2023-11-12 03:43:19
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDragItem.h	2024-01-19 07:22:51
@@ -22,12 +22,14 @@
 
 @property (nonatomic, readonly) __kindof NSItemProvider *itemProvider;
 
-/* Use `localObject` to attach additional information to
+/**
+ * Use `localObject` to attach additional information to
  * this drag item, visible only inside the app that started the drag.
  */
 @property (nonatomic, strong, nullable) id localObject;
 
-/* Use `previewProvider` to change the preview for an item.
+/**
+ * Use `previewProvider` to change the preview for an item.
  *
  * Each item is usually given a preview when the drag begins,
  * either by the UIDragInteractionDelegate's `-dragInteraction:previewForLiftingItem:session:`
@@ -41,6 +43,12 @@
  * To hide the preview, set `previewProvider` to a block that returns nil.
  */
 @property (nonatomic, copy, nullable) UIDragPreview * _Nullable (^previewProvider)(void);
+
+/**
+ * Requests for the drop preview to be updated if an active drop animation is in progress, and can handle updates.
+ * If no active drop animation is in progress for the specified item, then nothing happens.
+ */
+- (void)setNeedsDropPreviewUpdate API_AVAILABLE(ios(17.4));
 
 @end
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFeedbackGenerator.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFeedbackGenerator.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFeedbackGenerator.h	2023-11-12 03:43:23
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIFeedbackGenerator.h	2024-01-19 07:22:55
@@ -7,6 +7,7 @@
 
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKitDefines.h>
+#import <UIKit/UIInteraction.h>
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIImpactFeedbackGenerator.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIImpactFeedbackGenerator.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIImpactFeedbackGenerator.h	2023-11-12 03:43:19
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIImpactFeedbackGenerator.h	2024-01-19 07:22:51
@@ -16,9 +16,9 @@
     UIImpactFeedbackStyleLight,
     UIImpactFeedbackStyleMedium,
     UIImpactFeedbackStyleHeavy,
-    UIImpactFeedbackStyleSoft     API_AVAILABLE(ios(13.0)),
-    UIImpactFeedbackStyleRigid    API_AVAILABLE(ios(13.0))
-};
+    UIImpactFeedbackStyleSoft     API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos),
+    UIImpactFeedbackStyleRigid    API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos)
+} API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
 
 // UIImpactFeedbackGenerator is used to give user feedback when an impact between UI elements occurs
 UIKIT_EXTERN API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h	2023-11-12 11:31:28
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h	2024-01-19 03:25:50
@@ -163,6 +163,7 @@
 #import <UIKit/UISegmentedControl.h>
 #import <UIKit/UISlider.h>
 #import <UIKit/UISplitViewController.h>
+#import <UIKit/UIStandardTextCursorView.h>
 #import <UIKit/UIStepper.h>
 #import <UIKit/UIStoryboard.h>
 #import <UIKit/UIStoryboardPopoverSegue.h>
@@ -180,6 +181,7 @@
 #import <UIKit/UITableViewController.h>
 #import <UIKit/UITapGestureRecognizer.h>
 #import <UIKit/UITextChecker.h>
+#import <UIKit/UITextCursorDropPositionAnimator.h>
 #import <UIKit/UITextCursorView.h>
 #import <UIKit/UITextField.h>
 #import <UIKit/UITextInput.h>
@@ -317,6 +319,7 @@
 #import <UIKit/UNNotificationResponse+UIKitAdditions.h>
 #import <UIKit/UIAction.h>
 #import <UIKit/UIMenu.h>
+#import <UIKit/UIMenuDisplayPreferences.h>
 #import <UIKit/UIMenuLeaf.h>
 #import <UIKit/UIMenuBuilder.h>
 #import <UIKit/UIMenuElement.h>
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenu.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenu.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenu.h	2023-11-12 03:43:24
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenu.h	2024-01-19 02:20:45
@@ -9,6 +9,7 @@
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKitDefines.h>
 #import <UIKit/UIMenuElement.h>
+#import <UIKit/UIMenuDisplayPreferences.h>
 
 typedef NSString *UIMenuIdentifier NS_SWIFT_NAME(UIMenu.Identifier) NS_TYPED_EXTENSIBLE_ENUM API_AVAILABLE(ios(13.0));
 
@@ -55,6 +56,10 @@
 
 /// The element(s) in the menu and sub-menus that have an "on" menu item state.
 @property (nonatomic, readonly) NSArray <UIMenuElement *> *selectedElements API_AVAILABLE(ios(15.0));
+
+/// Display preferences for this menu's immediate children. Preferences are not inherited by sub menus,
+/// and may be ignored or overridden by the system in certain element sizes or menu layouts.
+@property (nonatomic, nullable, copy) UIMenuDisplayPreferences *displayPreferences API_AVAILABLE(ios(17.4));
 
 /*!
  * @abstract Creates a UIMenu with an empty title, nil image, automatically generated identifier, and default options.
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenuDisplayPreferences.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenuDisplayPreferences.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenuDisplayPreferences.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIMenuDisplayPreferences.h	2024-01-19 07:22:55
@@ -0,0 +1,27 @@
+#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UIMenuDisplayPreferences.h>)
+//
+//  UIMenuDisplayPreferences.h
+//  UIKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKitDefines.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+UIKIT_EXTERN API_AVAILABLE(ios(17.4)) NS_SWIFT_UI_ACTOR
+@interface UIMenuDisplayPreferences : NSObject <NSCopying, NSSecureCoding>
+
+/// Maximum number of title and subtitle lines displayed for this menu's elements. Defaults to NSNotFound, indicating no preference.
+@property (nonatomic, assign) NSInteger maximumNumberOfTitleLines;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+
+#else
+#import <UIKitCore/UIMenuDisplayPreferences.h>
+#endif
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINotificationFeedbackGenerator.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINotificationFeedbackGenerator.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINotificationFeedbackGenerator.h	2023-11-12 03:43:24
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINotificationFeedbackGenerator.h	2024-01-19 07:22:56
@@ -14,7 +14,7 @@
     UINotificationFeedbackTypeSuccess,
     UINotificationFeedbackTypeWarning,
     UINotificationFeedbackTypeError
-};
+} API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
 
 // UINotificationFeedbackGenerator is used to give user feedback when an notification is displayed
 UIKIT_EXTERN API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteControl.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteControl.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteControl.h	2023-11-12 03:43:25
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteControl.h	2024-01-19 07:22:57
@@ -20,7 +20,7 @@
     UIPasteControlDisplayModeIconAndLabel,
     UIPasteControlDisplayModeIconOnly,
     UIPasteControlDisplayModeLabelOnly
-} API_AVAILABLE(ios(16.0)) NS_SWIFT_NAME(UIPasteControl.DisplayMode);
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_NAME(UIPasteControl.DisplayMode);
 
 UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_NAME(UIPasteControl.Configuration) NS_SWIFT_UI_ACTOR
 @interface UIPasteControlConfiguration : NSObject <NSSecureCoding>
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteboard.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteboard.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteboard.h	2023-11-12 03:43:24
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPasteboard.h	2024-01-19 07:28:52
@@ -16,33 +16,33 @@
 UIKIT_EXTERN UIPasteboardName const UIPasteboardNameGeneral API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
 UIKIT_EXTERN NSString *const UIPasteboardNameFind API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) API_UNAVAILABLE(visionos) API_DEPRECATED("The Find pasteboard is no longer available.", ios(3.0, 10.0));
 
-typedef NSString * UIPasteboardDetectionPattern NS_TYPED_ENUM API_AVAILABLE(ios(14.0));
+typedef NSString * UIPasteboardDetectionPattern NS_TYPED_ENUM API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /// NSString value, suitable for implementing "Paste and Go"
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternProbableWebURL API_AVAILABLE(ios(14.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternProbableWebURL API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /// NSString value, suitable for implementing "Paste and Search"
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternProbableWebSearch API_AVAILABLE(ios(14.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternProbableWebSearch API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /// NSNumber value
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternNumber API_AVAILABLE(ios(14.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternNumber API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /// Array of DDMatchLink values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternLink NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternLink NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchPhoneNumber values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternPhoneNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternPhoneNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchEmailAddress values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternEmailAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternEmailAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchAddress values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternPostalAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternPostalAddress NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchCalendarEvent values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternCalendarEvent NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternCalendarEvent NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchShipmentTrackingNumber values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternShipmentTrackingNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternShipmentTrackingNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchFlightNumber values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternFlightNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternFlightNumber NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 /// Array of DDMatchMoneyAmount values
-UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternMoneyAmount  NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0));
+UIKIT_EXTERN UIPasteboardDetectionPattern const UIPasteboardDetectionPatternMoneyAmount  NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
 
 @class UIColor, UIImage;
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPencilInteraction.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPencilInteraction.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPencilInteraction.h	2023-11-12 03:43:22
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPencilInteraction.h	2024-01-19 07:22:54
@@ -9,54 +9,62 @@
 #import <UIKit/UIInteraction.h>
 #import <UIKit/UIKitDefines.h>
 
+#pragma mark - Preferred Actions
+
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
-/* Preferred actions available to the user in Settings.
- */
+/// Preferred actions available to the user in Settings.
 typedef NS_ENUM(NSInteger, UIPencilPreferredAction) {
-    /* No action, or the user has disabled pencil interactions in Accessibility settings */
+
+    /// No action, or the user has disabled pencil interactions in Accessibility settings
     UIPencilPreferredActionIgnore = 0,
     
-    /* Switch between the current tool and eraser */
+    /// Switch between the current tool and eraser
     UIPencilPreferredActionSwitchEraser,
     
-    /* Switch between the current tool and the previously used tool */
+    /// Switch between the current tool and the previously used tool
     UIPencilPreferredActionSwitchPrevious,
     
-    /* Show and hide the color palette */
+    /// Show and hide the color palette
     UIPencilPreferredActionShowColorPalette,
     
-    /* Show the ink attributes palette */
+    /// Show the ink attributes palette
     UIPencilPreferredActionShowInkAttributes API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos),
 
 } API_AVAILABLE(ios(12.1)) API_UNAVAILABLE(watchos, tvos);
 
+#pragma mark - Interaction
 
 @protocol UIPencilInteractionDelegate;
 
 UIKIT_EXTERN API_AVAILABLE(ios(12.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
 @interface UIPencilInteraction : NSObject <UIInteraction>
 
+/// The user’s preferred double-tap action as set in Settings app
 @property (class, nonatomic, readonly) UIPencilPreferredAction preferredTapAction;
+
+/// The user's preference for drawing with pencil only as set in Settings app or the system tool picker
 @property (class, nonatomic, readonly) BOOL prefersPencilOnlyDrawing;
 
+/// The interaction's delegate
 @property (nonatomic, weak, nullable) id <UIPencilInteractionDelegate> delegate;
 
+/// Whether the interaction is enabled or not
 @property (nonatomic, getter=isEnabled) BOOL enabled;
 
 @end
 
+#pragma mark - Interaction Delegate
 
-API_AVAILABLE(ios(12.1)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(visionos) NS_SWIFT_UI_ACTOR
+UIKIT_EXTERN API_AVAILABLE(ios(12.1)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(visionos) NS_SWIFT_UI_ACTOR
 @protocol UIPencilInteractionDelegate <NSObject>
 
 @optional
 
-/* Called when the user taps on the side of the pencil, if the interaction's view is in a visible view hierarchy.
- *
- * The delegate may do anything in this method.  To perform the user's preferred action (as set in Settings), 
- * consult the preferredTapAction class property of UIPencilInteraction.
- */
+/// Called when the user taps on the side of the pencil, if the interaction's view is in a visible view hierarchy.
+///
+/// The delegate may do anything in this method.  To perform the user's preferred action (as set in Settings),
+/// consult the `preferredTapAction` class property of `UIPencilInteraction`.
 - (void)pencilInteractionDidTap:(UIPencilInteraction *)interaction;
 
 @end
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h	2023-11-12 11:31:46
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h	2024-01-19 02:21:14
@@ -56,6 +56,11 @@
 @property(nonatomic)         CGSize                       contentSize;                    // default CGSizeZero
 @property(nonatomic)         UIEdgeInsets                 contentInset;                   // default UIEdgeInsetsZero. add additional scroll area around content
 
+// A unit point that describes how to align the scroll view content when the content size is smaller than the scroll view bounds.
+// For example, (0, 0) aligns the content to the top left, (0.5, 0.5) centers the content, and (0.5, 1.0) would align the content to the bottom center.
+// Default: CGPointZero
+@property (nonatomic) CGPoint contentAlignmentPoint API_AVAILABLE(ios(17.4));
+
 /* When contentInsetAdjustmentBehavior allows, UIScrollView may incorporate
  its safeAreaInsets into the adjustedContentInset.
  */
@@ -87,12 +92,36 @@
 
 @property(nullable,nonatomic,weak) id<UIScrollViewDelegate>        delegate;                       // default nil. weak reference
 @property(nonatomic,getter=isDirectionalLockEnabled) BOOL directionalLockEnabled;         // default NO. if YES, try to lock vertical or horizontal scrolling while dragging
-@property(nonatomic)         BOOL                         bounces;                        // default YES. if YES, bounces past edge of content and back again
+
+// If YES, bounces past the edge of the content and back again.
+// Setting this property is a convenience for setting both `bouncesHorizontally` and `bouncesVertically`.
+// Only returns YES if both `bouncesHorizontally` and `bouncesVertically` are YES.
+// Default: YES
+@property (nonatomic) BOOL bounces;
+
+// If YES, bounces past the left and right edges of the content and back again.
+// Setting the `bounces` property will set this axis-specific value.
+// Default: YES
+@property (nonatomic) BOOL bouncesHorizontally API_AVAILABLE(ios(17.4));
+
+// If YES, bounces past the top and bottom edges of the content and back again.
+// Setting the `bounces` property will set this axis-specific value.
+// Default: YES
+@property (nonatomic) BOOL bouncesVertically API_AVAILABLE(ios(17.4));
+
 @property(nonatomic)         BOOL                         alwaysBounceVertical;           // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically
 @property(nonatomic)         BOOL                         alwaysBounceHorizontal;         // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally
 @property(nonatomic,getter=isPagingEnabled) BOOL          pagingEnabled API_UNAVAILABLE(tvos);// default NO. if YES, stop on multiples of view bounds
 @property(nonatomic,getter=isScrollEnabled) BOOL          scrollEnabled;                  // default YES. turn off any dragging temporarily
 
+// If YES, scrolling horizontally past the left and right edges of the content will start scrolling parent scroll views.
+// Default: YES
+@property (nonatomic) BOOL transfersHorizontalScrollingToParent API_AVAILABLE(ios(17.4));
+
+// If YES, scrolling vertically past the top and bottom edges of the content will start scrolling parent scroll views.
+// Default: YES
+@property (nonatomic) BOOL transfersVerticalScrollingToParent API_AVAILABLE(ios(17.4));
+
 @property(nonatomic)         BOOL                         showsVerticalScrollIndicator;   // default YES. show indicator while we are tracking. fades out after tracking
 @property(nonatomic)         BOOL                         showsHorizontalScrollIndicator; // default YES. show indicator while we are tracking. fades out after tracking
 @property(nonatomic)         UIScrollViewIndicatorStyle   indicatorStyle;                 // default is UIScrollViewIndicatorStyleDefault
@@ -107,8 +136,15 @@
 - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;  // animate at constant velocity to new offset
 - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;         // scroll so rect is just visible (nearest edges). nothing if rect completely visible
 
-- (void)flashScrollIndicators;             // displays the scroll indicators for a short time. This should be done whenever you bring the scroll view to front.
+// Displays the scroll indicators for a short time. This should be done whenever you bring the scroll view to front.
+- (void)flashScrollIndicators;
 
+// Shows scroll indicators immediately as a result of any contentOffset changes performed within the block.
+// Scroll indicators are only shown on axes where the contentOffset changes.
+// If contentOffset is set without animation, the scroll indicators will fade out after a delay.
+// If contentOffset is set with animation, the scroll indicators will fade out when the animation completes.
+- (void)withScrollIndicatorsShownForContentOffsetChanges:(void (NS_NOESCAPE ^)(void))changes API_AVAILABLE(ios(17.4));
+
 /*
  Scrolling with no scroll bars is a bit complex. on touch down, we don't know if the user will want to scroll or track a subview like a control.
  on touch down, we start a timer and also look at any movement. if the time elapses without sufficient change in position, we start sending events to
@@ -117,10 +153,20 @@
  you can remove the delay in delivery of touchesBegan:withEvent: to subviews by setting delaysContentTouches to NO.
  */
 
-@property(nonatomic,readonly,getter=isTracking)     BOOL tracking;        // returns YES if user has touched. may not yet have started dragging
-@property(nonatomic,readonly,getter=isDragging)     BOOL dragging;        // returns YES if user has started scrolling. this may require some time and or distance to move to initiate dragging
-@property(nonatomic,readonly,getter=isDecelerating) BOOL decelerating;    // returns YES if user isn't dragging (touch up) but scroll view is still moving
+// Returns YES if user has touched. May not yet have started dragging
+@property(nonatomic, readonly, getter=isTracking) BOOL tracking;
 
+// Returns YES if user has started scrolling. It may require some time and/or distance to move to initiate dragging
+@property(nonatomic, readonly, getter=isDragging) BOOL dragging;
+
+// Returns YES if user isn't dragging (touch up) but scroll view is still moving
+@property(nonatomic, readonly, getter=isDecelerating) BOOL decelerating;
+
+// Returns YES if the scroll view is currently animating a `contentOffset` change
+// For example, this could be from a `setContentOffset:animated:` call
+// Note that deceleration will *not* cause this property to be YES
+@property (nonatomic, readonly, getter=isScrollAnimating) BOOL scrollAnimating API_AVAILABLE(ios(17.4));
+
 @property(nonatomic) BOOL delaysContentTouches;       // default is YES. if NO, we immediately call -touchesShouldBegin:withEvent:inContentView:. this has no effect on presses
 @property(nonatomic) BOOL canCancelContentTouches;    // default is YES. if NO, then once we start tracking, we don't try to drag if the touch moves. this has no effect on presses
 
@@ -148,22 +194,37 @@
 - (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated API_AVAILABLE(ios(3.0));
 - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated API_AVAILABLE(ios(3.0));
 
-@property(nonatomic) BOOL  bouncesZoom;          // default is YES. if set, user can go past min/max zoom while gesturing and the zoom will animate to the min/max value at gesture end
+// If set, the user can zoom past the min/max scale while gesturing and the scale will animate to the min/max value when the gesture ends
+// Default: YES
+@property (nonatomic) BOOL bouncesZoom;
 
-@property(nonatomic,readonly,getter=isZooming)       BOOL zooming;       // returns YES if user in zoom gesture
-@property(nonatomic,readonly,getter=isZoomBouncing)  BOOL zoomBouncing;  // returns YES if we are in the middle of zooming back to the min/max value
+// Returns YES if the user is performing a zoom gesture
+@property (nonatomic, readonly, getter=isZooming) BOOL zooming;
 
+// Returns YES if ths scroll view is in the middle of zooming back to the min/max zoom scale
+@property (nonatomic, readonly, getter=isZoomBouncing) BOOL zoomBouncing;
+
+// Returns YES if the scroll view is currently animating a `zoomScale` change
+// For example, this could be from a `setZoomScale:animated:` call
+@property (nonatomic, readonly, getter=isZoomAnimating) BOOL zoomAnimating API_AVAILABLE(ios(17.4));
+
 // When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `-scrollViewShouldScrollToTop:`, and it is not already at the top.
 // On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled.
-@property(nonatomic) BOOL  scrollsToTop API_UNAVAILABLE(tvos);          // default is YES.
+// Default: YES
+@property (nonatomic) BOOL scrollsToTop API_UNAVAILABLE(tvos);
 
+// Stops any scrolling or zooming, whether initiated programmatically or by the user
+// Stops scrolling at the current `contentOffset` during deceleration unless bouncing, in which case the `contentOffset` is moved within the valid range
+// If paging is enabled, aligns `contentOffset` with a page boundary
+- (void)stopScrollingAndZooming API_AVAILABLE(ios(17.4));
+
 // Use these accessors to configure the scroll view's built-in gesture recognizers.
 // Do not change the gestures' delegates or override the getters for these properties.
 
 // Change `panGestureRecognizer.allowedTouchTypes` to limit scrolling to a particular set of touch types.
 @property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer API_AVAILABLE(ios(5.0));
 // `pinchGestureRecognizer` will return nil when zooming is disabled.
-@property(nullable, nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer API_AVAILABLE(ios(5.0));
+@property(nullable, nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer API_AVAILABLE(ios(5.0)) API_UNAVAILABLE(tvos);
 // `directionalPressGestureRecognizer` is disabled by default, but can be enabled to perform scrolling in response to up / down / left / right arrow button presses directly, instead of scrolling indirectly in response to focus updates.
 @property(nonatomic, readonly) UIGestureRecognizer *directionalPressGestureRecognizer API_DEPRECATED("Configuring the panGestureRecognizer for indirect scrolling automatically supports directional presses now, so this property is no longer useful.", tvos(9.0, 11.0));
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIStandardTextCursorView.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIStandardTextCursorView.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIStandardTextCursorView.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIStandardTextCursorView.h	2024-01-19 07:22:54
@@ -0,0 +1,25 @@
+#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UIStandardTextCursorView.h>)
+//
+//  UIStandardTextCursorView.h
+//  UIKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <UIKit/UIKitCore.h>
+#import <UIKit/UITextCursorView.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// @class      @c UIStandardTextCursorView
+/// @abstract   Displays a flashing cursor (aka "caret") view. Concrete implementation of UITextCursorView.
+/// @discussion When a selection is not ranged (or has a zero-length), a cursor view is displayed.
+UIKIT_EXTERN API_AVAILABLE(ios(17.4))
+@interface UIStandardTextCursorView : UIView <UITextCursorView>
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#else
+#import <UIKitCore/UIStandardTextCursorView.h>
+#endif
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorDropPositionAnimator.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorDropPositionAnimator.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorDropPositionAnimator.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorDropPositionAnimator.h	2024-01-19 07:22:54
@@ -0,0 +1,43 @@
+#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UITextCursorDropPositionAnimator.h>)
+//
+//  UITextCursorDropPositionAnimator.h
+//  UIKit
+//
+//  Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <UIKit/UITextCursorView.h>
+#import <UIKit/UITextInput.h>
+
+/// @class      @c UITextCursorDropPositionAnimator
+/// @abstract   Provides a mechanism for displaying and animating a temporary text cursor to indicate a drop location.
+/// @discussion For custom text view implementations that implement drag and drop functionality, use this animator providing either your own UITextCursorView
+///             implementation or a concrete implementation to indicate at which point in your document the dropped item will be inserted. Using this animator provides
+///             you with all of the default system animations for how the text cursor would behave.
+UIKIT_EXTERN API_AVAILABLE(ios(17.4)) NS_SWIFT_UI_ACTOR
+@interface UITextCursorDropPositionAnimator : NSObject
+
+/// The cursor view to be animated.
+@property (nonatomic, readonly) UIView<UITextCursorView> *cursorView;
+
+/// The object that implements the UITextInput protocol, used to query for geometry information regarding cursor placement.
+@property (nonatomic, readonly) UIView<UITextInput> *textInput;
+
+/// Creates an animator for the given text cursor view implementation, and the document object that implements the UITextInput protocol.
+- (instancetype)initWithTextCursorView:(UIView<UITextCursorView> *)cursorView textInput:(UIView<UITextInput> *)textInput NS_DESIGNATED_INITIALIZER;
+
+/// Controls the visibility of the cursor.
+- (void)setCursorVisible:(BOOL)visible animated:(BOOL)animated;
+
+/// Controls the placement of the cursor, using @c textInput and @c position to compute the final frame for the cursor view.
+- (void)placeCursorAtPosition:(UITextPosition *)position animated:(BOOL)animated;
+
+/// Optionally, provide an animation block or completion block to run alongside cursor appearance or position update animations.
+- (void)animateAlongsideChanges:(void (^ __nullable)(void))animation completion:(void (^ __nullable)(void))completion;
+
+- (instancetype)init NS_UNAVAILABLE;
+@end
+
+#else
+#import <UIKitCore/UITextCursorDropPositionAnimator.h>
+#endif
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorView.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorView.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorView.h	2023-11-12 03:43:18
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextCursorView.h	2024-01-19 07:22:51
@@ -6,11 +6,11 @@
 //  Copyright © 2023 Apple Inc. All rights reserved.
 //
 
-#import <UIKit/UIKitCore.h>
+#import <UIKit/UIView.h>
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
-/// @ protocol  UITextCursorView
+/// @protocol   UITextCursorView
 /// @abstract   A view that displays a flashing cursor (aka "caret") view.
 /// @discussion When a selection is not ranged (or has a zero-length), a cursor view is displayed.
 UIKIT_EXTERN API_AVAILABLE(ios(17.0)) NS_SWIFT_UI_ACTOR
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h	2023-11-12 05:16:36
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h	2024-01-19 02:20:39
@@ -230,6 +230,10 @@
 - (void)updateFloatingCursorAtPoint:(CGPoint)point API_AVAILABLE(ios(9.0));
 - (void)endFloatingCursor API_AVAILABLE(ios(9.0));
 
+/// Similar to `-caretRectForPosition:`, optionally provide a transform for the caret at `position`. As with all geometry information in this protocol,
+/// transforms are assumed to be relative to the `textInputView` coordinate space. If unimplemented, the identity transform is assumed.
+- (CGAffineTransform)caretTransformForPosition:(UITextPosition *)position API_AVAILABLE(ios(17.4));
+
 /**
  * Called when the text input is preparing an edit menu presentation for the specified text range.
  *
@@ -282,6 +286,11 @@
 @property (nonatomic, readonly) BOOL containsStart; // Returns YES if the rect contains the start of the selection.
 @property (nonatomic, readonly) BOOL containsEnd; // Returns YES if the rect contains the end of the selection.
 @property (nonatomic, readonly) BOOL isVertical; // Returns YES if the rect is for vertically oriented text.
+
+/// Custom transform for highlight rects.
+/// This transform is assumed to be in the `textInputView` coordinate space.
+/// Default is CGAffineTransformIdentity (no transform applied).
+@property (nonatomic, readonly) CGAffineTransform transform API_AVAILABLE(ios(17.4));
 
 @end
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h	2023-11-12 11:31:40
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h	2024-01-19 04:11:56
@@ -262,6 +262,10 @@
 UIKIT_EXTERN UITextContentType const UITextContentTypeCreditCardExpirationYear  API_AVAILABLE(ios(17.0));
 UIKIT_EXTERN UITextContentType const UITextContentTypeCreditCardType            API_AVAILABLE(ios(17.0));
 
+/// eSIM activation
+UIKIT_EXTERN UITextContentType const UITextContentTypeCellularEID               API_AVAILABLE(ios(17.4));
+UIKIT_EXTERN UITextContentType const UITextContentTypeCellularIMEI              API_AVAILABLE(ios(17.4));
+
 NS_HEADER_AUDIT_END(nullability, sendability)
 
 #else
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSelectionDisplayInteraction.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSelectionDisplayInteraction.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSelectionDisplayInteraction.h	2023-11-12 03:43:23
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextSelectionDisplayInteraction.h	2024-01-19 07:22:55
@@ -16,6 +16,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @class UITextSelectionDisplayInteraction;
+@protocol UITextCursorView;
 
 UIKIT_EXTERN API_AVAILABLE(ios(17.0)) NS_SWIFT_UI_ACTOR
 @protocol UITextSelectionDisplayInteractionDelegate <NSObject>
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h	2023-11-12 11:44:20
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h	2024-01-19 02:21:14
@@ -80,7 +80,7 @@
  *
  * @return Return a UIAction to be performed when the text item is interacted with. Return @c nil to prevent the action from being performed.
  */
-- (nullable UIAction *)textView:(UITextView *)textView primaryActionForTextItem:(UITextItem *)textItem defaultAction:(UIAction *)defaultAction API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(watchos, tvos);
+- (nullable UIAction *)textView:(UITextView *)textView primaryActionForTextItem:(UITextItem *)textItem defaultAction:(UIAction *)defaultAction API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(tvos, watchos);
 
 /**
  * Asks the delegate for the menu configuration to be performed when interacting with a text item.
Clone this wiki locally