fix ios talk controls hit targets

This commit is contained in:
joshavant
2026-06-05 03:36:48 -05:00
parent 73f056a0a4
commit 762540aa04

View File

@@ -10,6 +10,10 @@ struct TalkProTab: View {
@State private var showPermissionPrompt = false
var openSettings: () -> Void
private enum Layout {
static let bottomScrollInset: CGFloat = OpenClawProMetric.bottomScrollInset + 160
}
private var state: TalkProState {
TalkProState(
gatewayConnected: self.gatewayConnected,
@@ -37,7 +41,7 @@ struct TalkProTab: View {
.padding(.top, 16)
.padding(.bottom, 18)
}
.safeAreaPadding(.bottom, OpenClawProMetric.bottomScrollInset)
.safeAreaPadding(.bottom, Layout.bottomScrollInset)
}
.navigationBarHidden(true)
}
@@ -192,13 +196,9 @@ struct TalkProTab: View {
.padding(.horizontal, 12)
.padding(.top, 11)
.padding(.bottom, 3)
Toggle("Speakerphone", isOn: self.$talkSpeakerphoneEnabled)
.padding(.horizontal, 14)
.padding(.vertical, 10)
self.controlToggleRow("Speakerphone", isOn: self.talkSpeakerphoneBinding)
Divider().padding(.leading, 14)
Toggle("Background listening", isOn: self.$talkBackgroundEnabled)
.padding(.horizontal, 14)
.padding(.vertical, 10)
self.controlToggleRow("Background listening", isOn: self.$talkBackgroundEnabled)
Divider().padding(.leading, 14)
Button(action: self.openSettings) {
HStack {
@@ -218,6 +218,25 @@ struct TalkProTab: View {
.padding(.horizontal, OpenClawProMetric.pagePadding)
}
private func controlToggleRow(_ title: String, isOn: Binding<Bool>) -> some View {
Toggle(title, isOn: isOn)
.contentShape(Rectangle())
.padding(.horizontal, 14)
.padding(.vertical, 10)
.overlay {
// Keep Toggle semantics for accessibility while making the full visual row tappable.
Button {
isOn.wrappedValue.toggle()
} label: {
Rectangle()
.fill(.clear)
.contentShape(Rectangle())
}
.buttonStyle(.plain)
.accessibilityHidden(true)
}
}
private func cardHeader(
title: String,
value: String?,
@@ -322,6 +341,15 @@ struct TalkProTab: View {
}
}
private var talkSpeakerphoneBinding: Binding<Bool> {
Binding(
get: { self.talkSpeakerphoneEnabled },
set: { enabled in
self.talkSpeakerphoneEnabled = enabled
self.appModel.setTalkSpeakerphoneEnabled(enabled)
})
}
private func handlePrimaryAction() {
switch self.state.primaryAction {
case .start: