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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ausblenden möchten, die pickerView, versuchen Sie dies:
endEditing
und der offenen Klammer ` ( `. Wenn ich hinzufügen, dass Komma, es hat noch einen Fehler und die vorgeschlagene Lösung ist, fügen Sie ein weiteres Komma, und, und auf.Tut mir Leid, ich habe vergessen, Sie sind mit swift statt objective-c
InformationsquelleAutor Bannings
Einer Weise zu verstecken picker view:
Dieser arbeitete für mich.
InformationsquelleAutor Anas
ich habe versucht, den Rücktritt der first responder des Textfeldes in didSelectRow
}
InformationsquelleAutor Nitrousjp