用于文本字段输入的Swift UIDatePicker - 如何使UIDatePicker消失?

时间:2014-11-18 02:31:26

标签: ios swift

这是我第一次尝试使用Swift或iPhone应用程序,所以不用说我不知道​​如何做很多事情。

现在我有一个带有文本字段和按钮的视图控制器。我已经设法找到示例代码几乎完成我需要的东西。我想做以下事情:

  1. 当我点击文本字段时,屏幕上会出现一个UIDatePicker。
  2. 将UIDate选取器设置为仅显示时间 - 而不是日期。
  3. 将选定的UIDatePicker时间放在文本字段中。
  4. 单击按钮时,UIDatePicker会消失。
  5. 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.
    
        }
    
    }
    

3 个答案:

答案 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就会消失!