Skip to content

Commit efac308

Browse files
authored
Merge pull request #670 from scenee/fix/test-failure-on-iOS-26
Fix some build and test issues on iOS 26
2 parents 77b5584 + c5291d7 commit efac308

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ jobs:
3737
fail-fast: false
3838
matrix:
3939
include:
40+
- os: "26.0"
41+
xcode: "26.0.1"
42+
sim: "iPhone 16 Pro"
43+
parallel: NO # Stop random test job failures
44+
runs-on: macos-15
4045
- os: "18.5"
4146
xcode: "16.4"
4247
sim: "iPhone 16 Pro"

Sources/Core.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class Core: NSObject, UIGestureRecognizerDelegate {
5252
}
5353
private(set) var statePublisher: CurrentValueSubject<FloatingPanelState, Never> = .init(.hidden)
5454

55-
let panGestureRecognizer: FloatingPanelPanGestureRecognizer
55+
var panGestureRecognizer: FloatingPanelPanGestureRecognizer
5656
let panGestureDelegateRouter: FloatingPanelPanGestureRecognizer.DelegateRouter
5757
var isRemovalInteractionEnabled: Bool = false
5858

@@ -1261,7 +1261,7 @@ class Core: NSObject, UIGestureRecognizerDelegate {
12611261
}
12621262

12631263
/// A gesture recognizer that looks for panning (dragging) gestures in a panel.
1264-
public final class FloatingPanelPanGestureRecognizer: UIPanGestureRecognizer {
1264+
public class FloatingPanelPanGestureRecognizer: UIPanGestureRecognizer {
12651265
/// The gesture starting location in the surface view which it is attached to.
12661266
fileprivate var initialLocation: CGPoint = .zero
12671267
private weak var floatingPanel: Core! // Core has this gesture recognizer as non-optional

Sources/SurfaceView.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,13 @@ public class SurfaceAppearance: NSObject {
4545
}
4646
}()
4747

48+
#if swift(>=6.2)
4849
@available(iOS 26.0, *)
4950
public var cornerConfiguration: UICornerConfiguration? {
5051
get { _cornerConfiguration as? UICornerConfiguration }
5152
set { _cornerConfiguration = newValue }
5253
}
54+
#endif
5355

5456
private var _cornerConfiguration: Any?
5557

@@ -384,11 +386,13 @@ public class SurfaceView: UIView {
384386
}
385387

386388
private func updateCornerRadius() {
389+
#if swift(>=6.2)
387390
if #available(iOS 26.0, *), let cornerConfiguration = appearance.cornerConfiguration {
388391
containerView.cornerConfiguration = cornerConfiguration
389392
containerView.layer.masksToBounds = true
390393
return
391394
}
395+
#endif
392396
containerView.layer.cornerRadius = appearance.cornerRadius
393397
guard containerView.layer.cornerRadius != 0.0 else {
394398
containerView.layer.masksToBounds = false

Tests/CoreTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,14 +958,30 @@ class CoreTests: XCTestCase {
958958
}
959959

960960
func test_initial_scroll_offset_reset() {
961+
class MockPanGestureRecognizer: FloatingPanelPanGestureRecognizer {
962+
var _view: UIView?
963+
override var view: UIView? {
964+
set { _view = newValue }
965+
get { _view }
966+
}
967+
var _state: UIGestureRecognizer.State = .possible
968+
override var state: UIGestureRecognizer.State {
969+
set { _state = newValue }
970+
get { _state }
971+
}
972+
}
961973
let fpc = FloatingPanelController()
974+
let mockGesture = MockPanGestureRecognizer()
975+
mockGesture.view = fpc.floatingPanel.surfaceView
976+
fpc.floatingPanel.panGestureRecognizer = mockGesture
962977
let scrollView = UIScrollView()
963978
fpc.layout = FloatingPanelBottomLayout()
964979
fpc.track(scrollView: scrollView)
965980
fpc.showForTest()
966981

967982
fpc.move(to: .full, animated: false)
968983

984+
969985
fpc.panGestureRecognizer.state = .began
970986
fpc.floatingPanel.handle(panGesture: fpc.panGestureRecognizer)
971987

@@ -978,6 +994,8 @@ class CoreTests: XCTestCase {
978994

979995
scrollView.setContentOffset(expect, animated: false)
980996

997+
XCTAssertEqual(expect, scrollView.contentOffset)
998+
981999
fpc.move(to: .half, animated: true)
9821000

9831001
waitRunLoop(secs: 1.0)

0 commit comments

Comments
 (0)