【问题标题】:Swift UIDatePicker for text field input - how to make UIDatePicker disappear?用于文本字段输入的 Swift UIDatePicker - 如何使 UIDatePicker 消失?
【发布时间】:2015-01-15 03:03:03
【问题描述】:

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

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

  1. 当我点击文本字段时,屏幕上会出现UIDatePicker
  2. UIDate 选择器设置为仅显示时间,而不是日期。
  3. 将选定的UIDatePicker 时间放在文本字段中。
  4. 当我点击按钮时,UIDatePicker 消失。

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.

    }

}

【问题讨论】:

  • 你的代码帮我整理了我的日期选择器..谢谢!
  • MGann 你是怎么做到的,一旦点击该字段,键盘就不会显示,但 DatePicker 谢谢

标签: ios swift


【解决方案1】:

您在文本字段中调用resignFirstResponder

@IBAction func DoneButton(sender: UIButton) {
    dateField.resignFirstResponder()
}

此外,拥有同名的方法和属性也不是一个好主意 - 不确定那里的优先级,但在某些时候可能会造成混淆。

【讨论】:

  • 嗨内特 - 就是这样!谢谢您的帮助!另外感谢您对方法和属性名称的评论,我一定会改变它。
【解决方案2】:

您也可以只为 datePicker 创建一个出口。 @IBOutlet 弱 var datePicker: UIPickerView!

然后在你的函数中

@IBAction func DoneButton(sender: UIButton) {

    datePicker.hidden = true
}

【讨论】:

  • 您确实意识到日期选择器是键盘的输入视图,对吗?.. 解雇第一响应者是摆脱键盘视图的正确方法,而不是隐藏包含视图.. ..
【解决方案3】:

您可以尝试gestureRecognizer 来使 UIDatePicker 消失:

@objc func viewTapped(gestureRecognizer: UITapGestureRecognizer) {
   view.endEditing(true)    
}

这是我在我的应用程序中使用的,所以当用户点击屏幕上的任意位置时,UIDatePicker 就会消失!

【讨论】:

    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多