Ich habe den folgenden Code und die doneButton
Handler wird nie aufgerufen. Irgendeine Idee, was könnte schief gehen?addTarget kein Ereignis ausgelöst
Ich habe viele verschiedene Formate für den Selektor ausprobiert, auch mit und ohne Parameter. Ich stellte auch sicher, dass die UIView
Berührungsereignisse durch manuelle Einstellung userInteractionEnabled = true
empfangen. Danke für jede Hilfe im Voraus!
*** UPDATE: Ich habe den Code komplett überarbeitet, aber gleiches Verhalten:
Mein Protokoll:
import Foundation
protocol CustomDatePickerDelegate {
func dataPickerDone(date: NSDate)
func dataPickerChanged(date: NSDate)
}
meine Klasse:
import Foundation
import UIKit
class CustomDatePicker{
var delegate: CustomDatePickerDelegate?
var datePicker : UIDatePicker = UIDatePicker()
func CreateDatePicker(sender: UITextField) {
if (delegate is UIViewController)
{
let _self = delegate as! UIViewController
let _view = UIView(frame: CGRectMake(0, 0, _self.view.frame.width, 220))
let datePickerView : UIDatePicker = UIDatePicker(frame: CGRectMake(0, 40, 0, 0))
datePickerView.datePickerMode = UIDatePickerMode.Date
let _toolbar = UIToolbar()
let _doneButton = UIBarButtonItem(title: "DONE", style: UIBarButtonItemStyle.Done, target: self, action: #selector(CustomDatePicker.doneButton))
_toolbar.translucent = false
_toolbar.sizeToFit()
_doneButton.accessibilityLabel = "DoneToolbar"
let _spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
_toolbar.setItems([_spaceButton, _doneButton], animated: false)
_toolbar.userInteractionEnabled = true
datePickerView.addTarget(self, action: #selector(CustomDatePicker.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged)
_view.addSubview(datePickerView)
_view.addSubview(_toolbar)
sender.inputView = _view
}
}
@objc func handleDatePicker(sender:UIDatePicker) {
delegate?.dataPickerChanged(datePicker.date)
}
@objc func doneButton(){
delegate?.dataPickerDone(datePicker.date)
}
}
Wie Ich benutze es vom ViewController:
let _dataPicker : CustomDatePicker = CustomDatePicker()
_dataPicker.delegate = self
_dataPicker.CreateDatePicker(dataUI)
func dataPickerDone(date: NSDate) {
dataUI.text = DataFormatejada(date)
dataUI.resignFirstResponder()
}
func dataPickerChanged(date: NSDate) {
dataUI.text = DataFormatejada(date)
}
Ich denke, dies kann ein Ergebnis des Hinzufügens der 'UIDatePicker' als Unteransicht zu dem' UITextField' sein. Auch wenn dies nicht das Problem ist, sollte es, sollte dies alles Ihre Klasse sein, wirklich keine UIView-Unterklasse sein, da es scheint, dass die Methode die Datumsauswahl zu einer anderen Ansicht hinzufügt, anstatt der Instanz von MyDatePicker Die Hierarchie? –
hat mein Problem nicht gelöst, danke trotzdem! – Batiatto
Hmm, ich nehme an, dass Ihre Datumsauswahl wie erwartet auf dem Bildschirm erscheint und Sie damit interagieren und das Datum ändern können? –