Swift - ausblenden pickerView nach dem gewählten Wert

Ich habe ähnliche Fragen zu diesem Thema und Ihre Antworten waren hilfreich, aber ich bin am stecken, eine Letzte Sache. Ich versuche zu bekommen pickerView angezeigt, wenn ich Tippen Sie auf ein Feld, dann, wenn Daten selektiert werden, ich will die pickerView zu verstecken. Ich bin in der Lage, um die Daten aus der pickerView zu verstecken, gibt es jedoch noch eine graue Rechteck hinter dem pickerView, das bleibt. Wenn ich Tippen Sie auf den Bildschirm, nicht auf ein Feld oder in den pickerView, das graue Rechteck ausgeblendet, dann wieder eingeblendet, wenn ich Tippen Sie auf das nächste Feld, nur um zu bleiben, nachdem die neue Daten gewählt wird, bis ich Tippen Sie auf eine leere Leinwand.

Bin ich mit meinem code unten und Sie werden sehen, dass ich haben versucht, mehrere Optionen. Diese sind nicht, ich habe alles versucht, aber nach mehreren Anläufen begann ich zu einfach auskommentieren statt löschen also ich könnte mich daran erinnern, was ich getan hatte. Ich bin ganz neu codieren, so dass ich Schätze diese Website als Ressource und danken Ihnen für Ihre Unterstützung.

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

    @IBOutlet var enterSeason: UITextField!

    @IBOutlet var enterSport: UITextField!

    var dataPickerView = UIPickerView()    
    var season = ["2013", "2014", "2015"] //multi-season
    var sport = ["Baseball", "Football", "Basketball", "Hockey"]
    var activeDataArray = []

    override func viewDidLoad() {
        super.viewDidLoad()

        enterSeason.inputView = dataPickerView
        enterSport.inputView = dataPickerView
        dataPickerView.delegate = self
        dataPickerView.dataSource = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        //Dispose of any resources that can be recreated.
    }

    func textFieldDidBeginEditing(textField: UITextField) {
        activeDataArray = [] //clear out the clicked field data array
        if textField == enterSeason {
            activeDataArray = season
        } else
            if textField == enterSport {
                activeDataArray = sport
            }
        dataPickerView.reloadAllComponents()
        dataPickerView.hidden = false
    }

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return activeDataArray.count
    }

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return activeDataArray[row] as! String
    }

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if activeDataArray == season {
            enterSeason.text = season[row] as String
        }
        else if activeDataArray == sport {
            enterSport.text = sport[row] as String
        }
        //trying to hide the dataPicker
        dataPickerView.hidden = true
        //dataPickerView.reloadAllComponents()
        //self.dataPickerView.resignFirstResponder()
        //self.dataPickerView.frameForAlignmentRect(CGRectMake(0, 900, 375, 219))

    }

    //function to hide data in
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }

    //funtion to hide keyboard when screen is tapped
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }

}

InformationsquelleAutor Greg | 2015-05-28

Schreibe einen Kommentar