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.
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)
}
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
}
}
}
https://stackoverflow.com/questions/14148276/toolbar-with-previous-and-next-for-keyboard-inputaccessoryview
Recommended Posts