commit 7afe6f870ed7fa1e829bd4e0a4a6d861e9797dd1
parent e5c3a9d5614f9f33e01d07f04ba2c3e559a9ca50
Author: Marc Stibane <marc@taler.net>
Date: Thu, 19 Dec 2024 20:39:00 +0100
A11Y VoiceOver dismiss button
Diffstat:
3 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/TalerWallet1/Controllers/PublicConstants.swift b/TalerWallet1/Controllers/PublicConstants.swift
@@ -17,6 +17,7 @@ public let DRAGDELAY = 0.5
public let DRAGDURATION = 0.45
public let DRAGSPEED = 0.1
public let MAXRECENT = 4 // # of rows in Recent Transactions
+public let SCANDETENT = 0.999 // instead .large sheet - in the .001 is a VoiceOver dismiss button
public let ICONLEADING = CGFloat(-8)
public let HSPACING = CGFloat(10) // space between items in HStack
diff --git a/TalerWallet1/Views/Actions/ActionsSheet.swift b/TalerWallet1/Views/Actions/ActionsSheet.swift
@@ -97,14 +97,13 @@ struct DualHeightSheet: View {
@Binding var qrButtonTapped: Bool
let logger = Logger(subsystem: "net.taler.gnu", category: "DualSheet")
-// let scanDetent: PresentationDetent = .fraction(SCANDETENT)
@Environment(\.colorScheme) private var colorScheme
@Environment(\.colorSchemeContrast) private var colorSchemeContrast
-// @State private var sheetHeight: CGFloat = .zero
- @State private var selectedDetent: PresentationDetent = .fraction(0.1)
+ let scanDetent: PresentationDetent = .fraction(SCANDETENT)
+// @State private var selectedDetent: PresentationDetent = scanDetent // Cannot use instance member 'scanDetent' within property initializer
+ @State private var selectedDetent: PresentationDetent = .fraction(0.1) // workaround - update in .task
+// @State private var detents: Set<PresentationDetent> = [scanDetent]
@State private var detents: Set<PresentationDetent> = [.fraction(0.1)]
-// @State private var selectedDetent: PresentationDetent = .large
-// @State private var detents: Set<PresentationDetent> = [.large]
@State private var qrButtonTapped2: Bool = false
@State private var innerHeight: CGFloat = .zero
@State private var sheetHeight: CGFloat = .zero
@@ -113,8 +112,8 @@ struct DualHeightSheet: View {
Task {
//(1 second = 1_000_000_000 nanoseconds)
try? await Task.sleep(nanoseconds: 80_000_000)
- guard selectedDetent == .large else { return }
- detents = [.large]
+ guard selectedDetent == scanDetent else { return }
+ detents = [scanDetent]
}
}
@@ -138,7 +137,7 @@ struct DualHeightSheet: View {
qrButtonTapped = true // tell our caller
withAnimation(Animation.easeIn(duration: 0.6)) {
// animate this sheet to full height
- selectedDetent = .large
+ selectedDetent = scanDetent
}
}
}
@@ -158,13 +157,13 @@ struct DualHeightSheet: View {
}
.presentationDetents(detents, selection: $selectedDetent)
.onChange(of: selectedDetent) { newValue in
- if newValue == .large {
- logger.trace("onChange❗️selectedDetent = .large)")
+ if newValue == scanDetent {
+ logger.trace("onChange❗️selectedDetent = \(SCANDETENT)")
updateDetentsWithDelay()
qrButtonTapped = true // tell our caller
} else {
logger.trace("onChange❗️selectedDetent = .height(\(sheetHeight))")
- detents = [.large, .height(sheetHeight)]
+ detents = [scanDetent, .height(sheetHeight)]
}
}
.task {
diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift
@@ -117,10 +117,11 @@ struct MainView: View {
) {
let qrSheet = AnyView(QRSheet(stack: stack.push(".sheet"),
selectedBalance: $selectedBalance))
- let _ = logger.trace("❗️showScanner: .large❗️")
+ let _ = logger.trace("❗️showScanner: \(SCANDETENT)❗️")
if #available(iOS 16.4, *) {
+ let scanDetent: PresentationDetent = .fraction(SCANDETENT)
Sheet(stack: stack.push(), sheetView: qrSheet)
- .presentationDetents([.large])
+ .presentationDetents([scanDetent])
.transition(.opacity)
} else {
Sheet(stack: stack.push(), sheetView: qrSheet)