SwiftUI .decimalpad Return/Fertig Button?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SwiftUI .decimalpad Return/Fertig Button?

    Hallo,

    ich würde gerne .keyboardType(.decimalPad) für ein TextField in SwiftUI benutzen, doch leider finde ich keine Möglichkeit einen Done/Return Button mit anzuzeigen.
    Ich hätte erwartet das dies bei jedem KeyboardType enthalten ist, oder aber ich finde die Möglichkeit nicht ??!!
    Das Decimal Pad wird ordentlich angezeigt, aber ich bekomme es nach erfolgter Eingabe nicht wieder zu.
    Wenn ich das default Keyboard nehme gibt es einen RETURN Button der genau das macht.

    Wäre echt super wenn es dafür eine Lösung gibt.

    Gruß

    Ralf
  • Hey,

    wenn ich mich nicht täusche, gibt es standardmäßig kein Done/Return-Button beim NumberPad. Wo auch, rechts unten ist schließlich der Löschen-Button. Das siehst du z.B. auch in der iOS-Kontakte-App, wenn du die Telefonnummer eines Kontaktes ändern willst. Auch dort findest du keinen Return-Button..

    Stattdessen wird häufig mit einer Toolbar gearbeitet, einer Leiste direkt über der Tastatur, welche dann weitere Buttons wie einen "Fertig"-Button enthalten kann. Siehe z.B. hier: stackoverflow.com/questions/63…oolbar-above-the-keyboard

    Viele Grüße
  • Hallo @Osxer,

    vielen Dank für Deine Erklärung - ich war naiv davon ausgegangen das so etwas wie die Toolbar beim DecimalPad native über UI von Apple bereitgestellt wird.
    Ich werde mir mal den Beitrag auf Stackoverflow anschauen und sehen ob ich das irgendwie bei mir implementiert bekomme ... wenn nicht würde ich mich einfach nochmal hier im Forum melden ;)

    Gruß

    Ralf
  • Hallo,

    ich habe es erfolgreich mit Hilfe des folgenden Artikel implementiert: stackoverflow.com/questions/59…yboard-with-custom-button
    Dabei bin ich noch auf das folgende Package gestoßen: github.com/siteline/SwiftUI-Introspect

    Das hat es für mich als Nicht-Guru ;) noch etwas einfacher gemacht. Hier mal die Lösung in meinem Code:

    Quellcode

    1. import Introspect
    2. extension UITextField {
    3. @objc func doneButtonTapped(button:UIBarButtonItem) -> Void {
    4. self.resignFirstResponder()
    5. }
    6. }
    7. struct ChargingCostsView: View {
    8. ...
    9. ...
    10. TextField("Preis Kwh", text: $priceKwh)
    11. .keyboardType(.decimalPad)
    12. .introspectTextField { (textField) in
    13. let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: textField.frame.size.width, height: 44))
    14. let flexButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
    15. let doneButton = UIBarButtonItem(title: "Fertig", style: .done, target: self, action: #selector(textField.doneButtonTapped(button:)))
    16. doneButton.tintColor = UIColor(Color("eLogOrange"))
    17. toolBar.items = [flexButton, doneButton]
    18. toolBar.setItems([flexButton, doneButton], animated: true)
    19. textField.inputAccessoryView = toolBar
    20. }
    21. ...
    22. ...
    Alles anzeigen
    Nochmals DANKE an @Osxer, denn ohne den Hinweis wäre ich nicht dahin gekommen.

    Gruß

    Ralf