taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 7afe6f870ed7fa1e829bd4e0a4a6d861e9797dd1
parent e5c3a9d5614f9f33e01d07f04ba2c3e559a9ca50
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 19 Dec 2024 20:39:00 +0100

A11Y VoiceOver dismiss button

Diffstat:
MTalerWallet1/Controllers/PublicConstants.swift | 1+
MTalerWallet1/Views/Actions/ActionsSheet.swift | 21++++++++++-----------
MTalerWallet1/Views/Main/MainView.swift | 5+++--
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)