SwiftUI TextField mit UIKit-Wrapper erweitert den Vollbildmodus bei der Eingabe von Zahlen in der benutzerdefinierten Kr
Posted: 04 Jan 2025, 03:03
Ich habe ein Problem mit einem benutzerdefinierten UITextField-Wrapper in SwiftUI, der sich bei der Eingabe von Zahlen so weit ausdehnt, dass er den gesamten Bildschirm ausfüllt. Das Textfeld sollte seine Rahmengröße beibehalten, während die Schriftgröße für längere Zahlen verkleinert wird, aber stattdessen werden seine Einschränkungen durchbrochen.
Problemdetails:
Das Problem liegt vor DegenTrader/Views/Swap/SwapView.swift, insbesondere in der CustomTextField-Implementierung:
Das Textfeld wird im SwapView-Layout verwendet:
Erwartetes Verhalten:
Jede Hilfe bei der Behebung dieses Layoutproblems bei gleichzeitiger Beibehaltung der Schriftartskalierungsfunktion wäre sehr dankbar.
Problemdetails:
- Beim Eingeben von Zahlen wird das Textfeld über den vorgesehenen Rahmen hinaus erweitert
- Das Textfeld sollte seine Größe beibehalten und die Schriftart verkleinern für längere Nummern
- Wird derzeit verwendet adjustsFontSizeToFitWidth = true, aber es funktioniert nicht wie erwartet
Das Problem liegt vor DegenTrader/Views/Swap/SwapView.swift, insbesondere in der CustomTextField-Implementierung:
Code: Select all
struct CustomTextField: UIViewRepresentable {
// ... other properties
func makeUIView(context: Context) -> UITextField {
let textField = UITextField()
textField.adjustsFontSizeToFitWidth = true
textField.minimumFontSize = 16
// ... other configurations
}
}
Code: Select all
HStack(spacing: 12) {
CustomTextField(text: $fromAmount, field: .from, focusedField: $focusedField)
.frame(maxWidth: .infinity, maxHeight: 40)
Button(action: { showFromTokenSelect = true }) {
TokenButton(token: selectedFromToken, action: { showFromTokenSelect = true })
}
.frame(width: 140)
}
.frame(height: 40)
- Das Textfeld sollte seine Rahmengröße beibehalten
- Die Schriftart sollte bei längeren Zahlen automatisch verkleinert werden
- Das Layout sollte unabhängig von der Eingabelänge stabil bleiben
- Textfeld wird über seinen Rahmen hinaus erweitert
- Layout bricht bei der Eingabe langer Zahlen
- Cursorposition wird inkonsistent
- iOS 15.0+
- SwiftUI
- Xcode 14+
Jede Hilfe bei der Behebung dieses Layoutproblems bei gleichzeitiger Beibehaltung der Schriftartskalierungsfunktion wäre sehr dankbar.