Ich habe untersucht, wie ich meine eigene benutzerdefinierte Dezimal-Tastatur in eine UIView
einbetten. Ich habe unter Bild gefunden, das ich neu erstellen möchte. Aber ich bin mir nicht sicher, wie und was der beste Weg ist, um damit zu beginnen? ist es nur, um mehrere UIButton zu erstellen und dann in einer Methode zu behandeln, oder gibt es eine intelligente Möglichkeit, diese neu zu erstellen?Einbetten von benutzerdefinierten Tastatur in uiview
Antwort
Ein CollectionView ist eine gute Möglichkeit, dies zu tun. Erstellen Sie ein neues Storyboard, legen Sie einen UICollectionViewController dort ein. Erstellen Sie dann eine UICollectionViewCell mit einem UILabel (für Ziffern und einen Punkt) und einem UIImage (für den Löschen-Button).
Hier ist mein UICollectionViewController Code hierfür:
import UIKit
protocol KeypadDelegate: class {
func did(tapOnKeypad key: KeypadKey)
}
enum KeypadKey {
case number (value: Int)
case backspace
}
class KeypadViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
// MARK: - Properties.
weak var delegate: KeypadDelegate?
// MARK: - Lifecycle.
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.register(cellReuseID: KeypadCVCell.reuseID)
}
// MARK: - UICollectionView DataSource.
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 12
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "KeypadCVCell", for: indexPath) as! KeypadCVCell
switch indexPath.row {
case 0...8:
cell.configure(number: String(indexPath.row + 1))
case 9:
cell.setBlank()
case 10:
cell.configure(number: "0")
case 11:
let image = UIImage(named: "btn_keypad_backspace")
cell.configure(image: image)
default:
break
}
return cell
}
// MARK: - UICollectionView Delegate.
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
switch indexPath.row {
case 0...8:
let key: KeypadKey = .number(value: indexPath.row + 1)
delegate?.did(tapOnKeypad: key)
case 9:
break
case 10:
let key: KeypadKey = .number(value: 0)
delegate?.did(tapOnKeypad: key)
case 11:
delegate?.did(tapOnKeypad: .backspace)
default:
break
}
}
// MARK: - UICollectionView Delegate FlowLayout.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = collectionView.bounds.width/3
let height = collectionView.bounds.height/4
return CGSize(width: width, height: height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
}
class KeypadCVCell: UICollectionViewCell {
// MARK: - Outlets.
@IBOutlet weak var numberLabel: UILabel!
@IBOutlet weak var backspaceImageView: UIImageView!
// MARK: - Configuration.
func configure(number: String) {
self.numberLabel.text = number
self.backspaceImageView.isHidden = true
}
func configure(image: UIImage?) {
self.numberLabel.isHidden = true
self.backspaceImageView.image = image
}
func setBlank() {
self.numberLabel.isHidden = true
self.backspaceImageView.isHidden = true
}
}
Erstellen Sie eine einzelne UIButton
Aktion Steckdose, schließen Sie alle Tasten, um es, überprüfen Sie den Absender Titel Wert, wandelt es in Int, wenn nicht möglich, es das Komma ist oder wenn Titeltext leer ist es die Backspace. Oder erstellen Sie eine separate Funktion für die Rücktaste. Das wäre eine relativ einfache, durcheinander liegende Methode und würde nicht viel mehr als ein Dutzend Zeilen Code benötigen.
- 1. Einbetten von WebView in UIView
- 2. UIViewController in eine UIView einbetten
- 3. Feste Tastatur in einer UIView
- 4. Ein lokales Video in eine UIView einbetten
- 5. UIView Versteckt auf Tastatur Erscheint
- 6. Einbetten von Google Kalender mit benutzerdefinierten Kalenderfarben
- 7. Benutzerdefinierte UITableViewCell in eine andere benutzerdefinierte UIView einbetten?
- 8. aktualisiert Inhalt von benutzerdefinierten UIView innerhalb UICollectionViewCell
- 9. Hinzufügen von Farbverlauf zu einer benutzerdefinierten UIView
- 10. Einbetten Sammlung in benutzerdefinierten Tabellenansicht Zelle
- 11. Aktivierung der benutzerdefinierten Tastatur
- 12. EXC_BAD_ACCESS auf benutzerdefinierten UIView mit benutzerdefinierten XIB
- 13. Einbetten einer benutzerdefinierten Schriftart in meiner Anwendung
- 14. Wie benutzerdefinierten Stil in einbetten html Körper
- 15. Hinzufügen von benutzerdefinierten Emoticons auf Soft-Tastatur
- 16. UIView verwalten, wenn die Tastatur erscheint
- 17. UIView Schatten mit benutzerdefinierten Laufzeitattributen
- 18. Liferay 7 - Einbetten von benutzerdefinierten Portlets in benutzerdefinierte Layout-Vorlage
- 19. Autosizing UITableView in benutzerdefinierten UIView für Abschnitt
- 20. Mit denselben UITextFieldDelegate-Methoden in benutzerdefinierten UIView und in UIViewController
- 21. Benutzerdefinierte UIView, die an die Tastatur in iOS-Objektiv-c
- 22. IBoutlet von UIView in benutzerdefinierter UIView-Klasse erstellen swift
- 23. Einbetten eines benutzerdefinierten TableViewController zu anderen ViewControllern
- 24. iOS: UIToolbar oder UIView für Tastatur in swift
- 25. Empfangen von Benachrichtigungen von benutzerdefinierten "Fertig" -Taste auf der numerischen Tastatur funktioniert nicht in iOS 8.3
- 26. Größe von UIView in init
- 27. Verwenden einer benutzerdefinierten UIView für iCarousel
- 28. Zugriff auf untergeordnete Steuerelemente in benutzerdefinierten UIView mit XCTest
- 29. Lesen von Briefen von einer benutzerdefinierten iPhone-Tastatur
- 30. UIView mit benutzerdefinierten init funktioniert nicht
Große u könnte die KeypadCVCell als gut schreiben :-) nur für das Verständnis der 'cellFOrItemAt' –
meinem Beitrag hinzugefügt. – Demosthese