feat(ios): refine native ui controls

This commit is contained in:
chick
2026-09-09 11:14:39 +08:00
parent c568e496b2
commit 995206ac23
18 changed files with 397 additions and 212 deletions
@@ -7,6 +7,18 @@ struct SendMessageFormView: View {
@State private var content = ""
@State private var validationMessage: String?
private var trimmedPhoneNumber: String {
phoneNumber.trimmingCharacters(in: .whitespacesAndNewlines)
}
private var trimmedContent: String {
content.trimmingCharacters(in: .whitespacesAndNewlines)
}
private var canSend: Bool {
!trimmedPhoneNumber.isEmpty && !trimmedContent.isEmpty
}
var body: some View {
NavigationStack {
ZStack {
@@ -26,16 +38,19 @@ struct SendMessageFormView: View {
.pickerStyle(.menu)
TextField("收件号码", text: $phoneNumber)
.textFieldStyle(AIFieldStyle())
TextField("消息内容", text: $content, axis: .vertical)
.textFieldStyle(.plain)
.padding(.horizontal, 12)
.frame(minHeight: AITheme.buttonHeight)
.background(AITheme.canvas)
.clipShape(RoundedRectangle(cornerRadius: AITheme.buttonRadius))
TextField("消息内容", text: $content, axis: .vertical)
.overlay {
RoundedRectangle(cornerRadius: AITheme.buttonRadius)
.strokeBorder(AITheme.line)
}
.lineLimit(4...8)
.padding(12)
.background(AITheme.canvas)
.clipShape(RoundedRectangle(cornerRadius: AITheme.buttonRadius))
}
}
if let validationMessage {
@@ -57,6 +72,7 @@ struct SendMessageFormView: View {
ToolbarItem(placement: .confirmationAction) {
Button("发送") { send() }
.buttonStyle(AIButtonStyle(kind: .primary, size: .regular))
.disabled(!canSend)
}
}
}
@@ -65,7 +81,7 @@ struct SendMessageFormView: View {
private func send() {
Task {
do {
try await model.send(phoneNumber: phoneNumber, content: content)
try await model.send(phoneNumber: trimmedPhoneNumber, content: trimmedContent)
phoneNumber = ""
content = ""
validationMessage = nil