[SWIFT] Erweiterung zum Hinzufügen einer Auf- / Ab-Schaltfläche und einer Schaltfläche zum Beenden von UIToolBar

Einführung

Ich sehe oft einige Eingabeformulare mit Auf- / Ab- und Zieltasten auf der Tastatur. Ich schätze diese Art von Überlegung sehr: Umarmen: Dieses Mal habe ich eine Erweiterung erstellt, die sie nur durch Hinzufügen eines Satzes implementiert, also werde ich sie einführen.

Bild nach der Montage

Nur Fertig-Taste

uitoolbar_done.gif

Auf / Ab-Taste und Fertig-Taste

uitoolbar_updowndone.gif

Wie benutzt man

Nur Fertig-Taste

override func viewDidLoad() {
    super.viewDidLoad()
    //Stellen Sie die Schaltfläche Fertig in der Tastatursymbolleiste ein, wenn das Zieltextfeld aktiv ist.
    addPreviousNextableDoneButtonOnKeyboard(textFields: [textField1], previousNextable: false)
}

Auf / Ab-Taste und Fertig-Taste

override func viewDidLoad() {
    super.viewDidLoad()
    //Legen Sie die Schaltflächen für Vorder- / Rückseite und Fertig stellen in der Tastatursymbolleiste fest, wenn das Zieltextfeld aktiv ist.
    addPreviousNextableDoneButtonOnKeyboard(textFields: [textField2, textField3], previousNextable: true)
}

Extension


//
//  ViewController+ToolBar.swift
//  KeyboardUpDownSample
//
//  Created by Miharu Naruse on 2020/11/15.
//

//Referenzquellenseite
// - URL:: https://stackoverflow.com/questions/14148276/toolbar-with-previous-and-next-for-keyboard-inputaccessoryview

import Foundation
import UIKit

extension UIViewController {
    ///Das Einstellen der Hin- und Her-Schaltflächen und der Schaltfläche "Fertig stellen" in der Tastatursymbolleiste, wenn das Zieltextfeld aktiv ist.
    /// - Parameters:
    ///   - textFields:Array von Textfeldern, die Sie festlegen möchten
    ///   - previousNextable:Gibt an, ob die vorderen und hinteren Tasten aktiviert werden sollen
    ///
    ///Wie benutzt man
    /// =============================================
    ///     //Einstellungen der Symbolleiste der Textfeldtastatur
    ///     addPreviousNextableDoneButtonOnKeyboard(textFields: [textField1], previousNextable: false)
    ///     addPreviousNextableDoneButtonOnKeyboard(textFields: [textField2, textField3], previousNextable: true)
    ///
    func addPreviousNextableDoneButtonOnKeyboard(textFields: [UITextField], previousNextable: Bool = false) {
        for (index, textField) in textFields.enumerated() {
            //Die Schleifenverarbeitung wird für jedes Textfeld durchgeführt.
            let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
            toolBar.barStyle = .default
            ///Balkenschaltflächenelement
            var items = [UIBarButtonItem]()

            // MARK:Einstellungen der vorderen und hinteren Taste

            if previousNextable {
                //Wenn die vorderen und hinteren Tasten aktiviert sind
                ///Aufwärtspfeiltaste
                let previousButton = UIBarButtonItem(image: UIImage(systemName: "chevron.up"), style: .plain, target: self, action: nil)
                if textField == textFields.first {
                    //Inaktivieren Sie das oberste Textfeld im Array der Textfelder, die Sie festlegen möchten.
                    previousButton.isEnabled = false
                } else {
                    //Anders als oben
                    //Legen Sie das vorherige Textfeld als Ziel fest.
                    previousButton.target = textFields[index - 1]
                    //Konzentrieren Sie sich auf das Ziel.
                    previousButton.action = #selector(UITextField.becomeFirstResponder)
                }

                ///Fester Platz
                let fixedSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.fixedSpace, target: self, action: nil)
                fixedSpace.width = 8

                ///Abwärtspfeiltaste
                let nextButton = UIBarButtonItem(image: UIImage(systemName: "chevron.down"), style: .plain, target: self, action: nil)
                if textField == textFields.last {
                    //Initiieren Sie das untere Textfeld in dem Array von Textfeldern, die Sie festlegen möchten.
                    nextButton.isEnabled = false
                } else {
                    //Anders als oben
                    //Legen Sie das nächste Textfeld als Ziel fest.
                    nextButton.target = textFields[index + 1]
                    //Konzentrieren Sie sich auf das Ziel.
                    nextButton.action = #selector(UITextField.becomeFirstResponder)
                }

                //Fügen Sie den Balkenelementen vordere und hintere Schaltflächen hinzu.
                items.append(contentsOf: [previousButton, fixedSpace, nextButton])
            }

            // MARK:Fertig Tasteneinstellungen

            let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
            let doneButton = UIBarButtonItem(title: "Erledigt", style: .done, target: view, action: #selector(UIView.endEditing))
            //Fügen Sie dem Balkenschaltflächenelement eine Schaltfläche "Fertig" hinzu.
            items.append(contentsOf: [flexSpace, doneButton])

            toolBar.setItems(items, animated: false)
            toolBar.sizeToFit()

            textField.inputAccessoryView = toolBar
        }
    }
}

Referenzquellenseite

https://stackoverflow.com/questions/14148276/toolbar-with-previous-and-next-for-keyboard-inputaccessoryview

Recommended Posts

Erweiterung zum Hinzufügen einer Auf- / Ab-Schaltfläche und einer Schaltfläche zum Beenden von UIToolBar
So richten Sie kapt ein und verwenden es
[Rails] [Hinweis] Wann = zu <%%> hinzugefügt werden soll und wann nicht
Fügen Sie Frühlingsstiefel und Gradle zur Sonnenfinsternis hinzu
So richten Sie jEnv (Mac) ein und bedienen es
Java-Algorithmus Arterienzeit Auf- und Abrunden
[Swift5] Wie man die zweiten oder dritten Minderheitspunkte rundet, rundet oder aufrundet