这是我第一次尝试使用Swift或iPhone应用程序,所以不用说我不知道如何做很多事情。
现在我有一个带有文本字段和按钮的视图控制器。我已经设法找到示例代码几乎完成我需要的东西。我想做以下事情:
1到3正在运行。但是,如果我再次点击文本字段,我无法弄清楚如何让UIDatePicker消失并仍然返回屏幕。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var dateField: UITextField!
@IBAction func dateField(sender: UITextField) {
var datePickerView : UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Time
sender.inputView = datePickerView
datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)
}
@IBAction func DoneButton(sender: UIButton) {
//How to make datepicker disappear???
}
func handleDatePicker(sender: UIDatePicker) {
var timeFormatter = NSDateFormatter()
timeFormatter.dateStyle = .NoStyle
timeFormatter.timeStyle = .ShortStyle
dateField.text = timeFormatter.stringFromDate(sender.date)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
答案 0 :(得分:6)
您在文本字段中调用resignFirstResponder
:
@IBAction func DoneButton(sender: UIButton) {
dateField.resignFirstResponder()
}
此外,拥有一个同名的方法和属性并不是一个好主意 - 不确定那里的优先级,但在某些时候可能会让人感到困惑。
答案 1 :(得分:0)
您也可以为datePicker创建一个插座。 @IBOutlet weak var datePicker:UIPickerView!
然后在你的函数中
@IBAction func DoneButton(sender: UIButton) {
datePicker.hidden = true
}
答案 2 :(得分:0)
您可以尝试使用gestureRecognizer
之类的方法来使UIDatePicker消失:
@objc func viewTapped(gestureRecognizer: UITapGestureRecognizer) {
view.endEditing(true)
}
这就是我在应用程序中使用的内容,因此,当用户在屏幕上的任意位置点击时,UIDatePicker就会消失!