From 17df3cfeddf91d0767aebc0b8cd3a9cd0d40518f Mon Sep 17 00:00:00 2001 From: kirillzyusko Date: Tue, 3 Feb 2026 19:58:56 +0100 Subject: [PATCH] feat: swift 6 support --- ios/events/KeyboardEventEmitterPayload.swift | 1 + ios/interactive/KeyboardAreaExtender.swift | 1 + ios/interactive/KeyboardOffsetProvider.swift | 1 + ios/observers/FocusedInputObserver.swift | 2 ++ ios/observers/movement/KeyboardEventsIgnorer.swift | 1 + ios/observers/movement/KeyboardViewLocator.swift | 1 + .../movement/observer/KeyboardMovementObserver+Watcher.swift | 2 +- ios/observers/movement/observer/KeyboardMovementObserver.swift | 1 + ios/swizzling/UIResponderSwizzle.swift | 3 +++ ios/traversal/FocusedInputHolder.swift | 1 + ios/views/KeyboardControllerViewManager.swift | 3 ++- 11 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ios/events/KeyboardEventEmitterPayload.swift b/ios/events/KeyboardEventEmitterPayload.swift index 820fe55080..21db5f974b 100644 --- a/ios/events/KeyboardEventEmitterPayload.swift +++ b/ios/events/KeyboardEventEmitterPayload.swift @@ -8,6 +8,7 @@ import Foundation import UIKit +@MainActor public func buildEventParams(_ height: Double, _ duration: Int, _ tag: NSNumber) -> [AnyHashable: Any] { var data = [AnyHashable: Any]() let input = FocusedInputHolder.shared.get() diff --git a/ios/interactive/KeyboardAreaExtender.swift b/ios/interactive/KeyboardAreaExtender.swift index 124304d3bb..cf12a3ec59 100644 --- a/ios/interactive/KeyboardAreaExtender.swift +++ b/ios/interactive/KeyboardAreaExtender.swift @@ -5,6 +5,7 @@ // Created by Kiryl Ziusko on 02/11/2024. // +@MainActor class KeyboardAreaExtender: NSObject { private var currentInputAccessoryView: InvisibleInputAccessoryView? diff --git a/ios/interactive/KeyboardOffsetProvider.swift b/ios/interactive/KeyboardOffsetProvider.swift index a56da23812..7079eb3d6f 100644 --- a/ios/interactive/KeyboardOffsetProvider.swift +++ b/ios/interactive/KeyboardOffsetProvider.swift @@ -7,6 +7,7 @@ import Foundation +@MainActor @objc(KeyboardOffsetProvider) public class KeyboardOffsetProvider: NSObject { @objc public static let shared = KeyboardOffsetProvider() diff --git a/ios/observers/FocusedInputObserver.swift b/ios/observers/FocusedInputObserver.swift index f6b9226a30..fa981633aa 100644 --- a/ios/observers/FocusedInputObserver.swift +++ b/ios/observers/FocusedInputObserver.swift @@ -9,6 +9,7 @@ import Foundation import UIKit +@MainActor let noFocusedInputEvent: [String: Any] = [ "target": -1, "parentScrollViewTarget": -1, @@ -22,6 +23,7 @@ let noFocusedInputEvent: [String: Any] = [ ], ] +@MainActor @objc(FocusedInputObserver) public class FocusedInputObserver: NSObject { // class members diff --git a/ios/observers/movement/KeyboardEventsIgnorer.swift b/ios/observers/movement/KeyboardEventsIgnorer.swift index 46781fda50..44a95157f8 100644 --- a/ios/observers/movement/KeyboardEventsIgnorer.swift +++ b/ios/observers/movement/KeyboardEventsIgnorer.swift @@ -7,6 +7,7 @@ import Foundation +@MainActor @objc(KeyboardEventsIgnorer) public class KeyboardEventsIgnorer: NSObject { @objc public static let shared = KeyboardEventsIgnorer() diff --git a/ios/observers/movement/KeyboardViewLocator.swift b/ios/observers/movement/KeyboardViewLocator.swift index 0979a7a192..d4fa6808f5 100644 --- a/ios/observers/movement/KeyboardViewLocator.swift +++ b/ios/observers/movement/KeyboardViewLocator.swift @@ -5,6 +5,7 @@ // Created by Kiryl Ziusko on 25/07/2025. // +@MainActor final class KeyboardViewLocator { static let shared = KeyboardViewLocator() private var cachedKeyboardView: UIView? diff --git a/ios/observers/movement/observer/KeyboardMovementObserver+Watcher.swift b/ios/observers/movement/observer/KeyboardMovementObserver+Watcher.swift index 61b53a1d99..f105767eec 100644 --- a/ios/observers/movement/observer/KeyboardMovementObserver+Watcher.swift +++ b/ios/observers/movement/observer/KeyboardMovementObserver+Watcher.swift @@ -60,7 +60,7 @@ extension KeyboardMovementObserver { let position = CGFloat(animation.valueAt(time: duration)) // handles a case when final frame has final destination (i. e. 0 or 291) // but CASpringAnimation can never get to this final destination - let race: (CGFloat, CGFloat) -> CGFloat = animation.isIncreasing ? max : min + let race: (CGFloat, CGFloat) -> CGFloat = animation.isIncreasing ? { max($0, $1) } : { min($0, $1) } keyboardPosition = race(position, keyboardPosition) animation.lastValue = keyboardPosition } diff --git a/ios/observers/movement/observer/KeyboardMovementObserver.swift b/ios/observers/movement/observer/KeyboardMovementObserver.swift index 5c23801136..63f88bdff6 100644 --- a/ios/observers/movement/observer/KeyboardMovementObserver.swift +++ b/ios/observers/movement/observer/KeyboardMovementObserver.swift @@ -9,6 +9,7 @@ import Foundation import UIKit +@MainActor @objc(KeyboardMovementObserver) public class KeyboardMovementObserver: NSObject { // class members diff --git a/ios/swizzling/UIResponderSwizzle.swift b/ios/swizzling/UIResponderSwizzle.swift index 81fc90b9c5..b7b5acd2f5 100644 --- a/ios/swizzling/UIResponderSwizzle.swift +++ b/ios/swizzling/UIResponderSwizzle.swift @@ -8,8 +8,11 @@ import Foundation import UIKit +@MainActor private var pendingBecomeResponder: TextInput? +@MainActor private var originalResignFirstResponder: IMP? +@MainActor private var originalBecomeFirstResponder: IMP? @objc diff --git a/ios/traversal/FocusedInputHolder.swift b/ios/traversal/FocusedInputHolder.swift index c7f98d547c..a6fd56f8c1 100644 --- a/ios/traversal/FocusedInputHolder.swift +++ b/ios/traversal/FocusedInputHolder.swift @@ -8,6 +8,7 @@ import Foundation +@MainActor class FocusedInputHolder { static let shared = FocusedInputHolder() diff --git a/ios/views/KeyboardControllerViewManager.swift b/ios/views/KeyboardControllerViewManager.swift index 49ec60ead5..a6583473c8 100644 --- a/ios/views/KeyboardControllerViewManager.swift +++ b/ios/views/KeyboardControllerViewManager.swift @@ -1,3 +1,4 @@ +@MainActor @objc(KeyboardControllerViewManager) class KeyboardControllerViewManager: RCTViewManager { override class func requiresMainQueueSetup() -> Bool { @@ -5,7 +6,7 @@ class KeyboardControllerViewManager: RCTViewManager { } override func view() -> (KeyboardControllerView) { - return KeyboardControllerView(frame: CGRect.zero, bridge: bridge) + return KeyboardControllerView(frame: .zero, bridge: bridge) } @objc(synchronizeFocusedInputLayout:)