Ziehen Sie zuerst @IBOutlet
@IBOutlet weak var money: UITextField! //輸入金額
@IBOutlet weak var tip: UITextField! //輸入小費
@IBOutlet weak var result: UILabel! //小費計算結果
Setzen Sie zuerst den Anfangswert auf 0
Ändern Sie dann den Wert der Schaltfläche Löschen in Immer sichtbar
Lassen Sie das Eingabefeld eine eindeutige Funktion von ⓧ haben
Ändern Sie schließlich den Tastaturtyp in Nummernblock
Benutzer dürfen nur Zahlen eingeben, um die Eingabe von Text zu vermeiden und Programmfehler zu verursachen
Teil der Berechnungsschaltfläche
Zusätzlich zum Hinzufügen eines Prüfmechanismus, um zu verhindern, dass Benutzer Zahlen eingeben
if money.text == "" || tip.text == "" {
result.text="ಠ╭╮ಠ"
}
else{
result.text = String(Double(money.text!)! * Double(tip.text!)! / 100)
}
Funktion zum Zurückziehen der Tastatur
Die Methode besteht darin, die Funktion resignFirstResponder () aufzurufen
@IBAction func calculate(_ sender: UIButton) {
money.resignFirstResponder()
tip.resignFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool{
money.resignFirstResponder()
tip.resignFirstResponder()
return true
}
Drücken Sie eine beliebige Taste auf dem Bildschirm, um die Tastatur wegzulegen
Ist diese beiden Funktionen hinzuzufügen
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
überschreiben func viewDidLoad () {super.viewDidLoad ()} im Inneren
Füge eins hinzu
self.hideKeyboardWhenTappedAround()
Schutz Ihrer Codebasis: Umgang mit unerwarteten Enum-Werten Haben Sie jemals eine Situation erlebt, in der Ihre App aus dem Nichts abstürzte, was bei einer Untersuchung ergab, dass das Backend einen Wert für ein bestimmtes Enum-basiertes Feld bereitstellte, das nicht innerhalb des Enum im Code vorhanden ist? Betrachten Sie das folgende Beispiel: Ohhh, ich liebe Tee. Aber was ist, wenn wir favouriteBeverage in den JSON-Daten von Tea in Juice ändern (ein Wert, der in der Aufzählung Beverage nicht vorhanden ist)? Konzentrieren Sie sich auf den Teil der Meldung: „Beverage kann nicht von ungültigem String-Wert Juice initialisiert werden.“ Wenn es sich um eine tatsächliche App anstelle eines Playground-Codes gehandelt hätte, wäre die App abgestürzt. Wie sorgen wir also dafür, dass unsere App, selbst wenn das Backend einen ungültigen Wert in der Antwort sendet, damit umgehen kann, anstatt direkt abzustürzen? Einer der Wege und mein persönlicher Favorit:
Da ich einen Artikel zur Implementierung eines Validators für das Anmeldeformular in RxSwift geschrieben habe, habe ich mich entschieden, einen für die gleiche Idee mit dem Apple Combine-Framework zu schreiben. Fast alle mobilen Apps erfordern ein Anmeldeformular und Sie müssen die Benutzeranmeldeinformationen validieren, bevor Sie mit dem Anmeldevorgang fortfahren.
Hallo, Cyber-Enthusiasten! Willkommen zurück bei der OSINT-Serie zur Bedrohungsjagd. Im ersten Artikel habe ich Ihnen einen Überblick über OSINT und seine Bedeutung bei der Bedrohungsjagd gegeben.
Wenn wir auf diesem Planeten weiterhin erfolgreich sein wollen, müssen wir gefährliche Gespräche führen. Diejenigen, die das in Frage stellen, was wir getan haben, was wir tun und was wir derzeit weiterhin tun werden (oder planen).
In der heutigen schnelllebigen und wettbewerbsintensiven Welt spielt die Karriere eine wichtige Rolle für das persönliche Wachstum, die finanzielle Stabilität und die allgemeine Lebenszufriedenheit. Viele Menschen befinden sich jedoch in einem unerbittlichen Kreislauf aus Stagnation und Unzufriedenheit, der ihr Berufsleben allmählich verkümmert.
„Er wird mich beschützen, wenn ich in Gefahr bin. Er wird mich in seinem Zelt verstecken.