这是我第一次尝试Swift或iPhone应用程序,所以不用说,我不知道如何在这一点上做很多事情。
现在我有一个带有文本字段和按钮的视图控制器。我已经设法找到了几乎可以完成我所需要的示例代码。我想做以下事情:
1.当我单击文本字段时,屏幕上出现UIDatePicker
。
1.将UIDate
选取器设置为仅显示时间-不显示日期。
1.在文本字段中输入所选的UIDatePicker
时间。
1.当我单击按钮时,让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.
}
}
4条答案
按热度按时间iyzzxitl1#
在文本字段中调用
resignFirstResponder
:此外,让一个方法和一个属性具有相同的名称也不是一个好主意--不确定它们的优先级,但在某些时候可能会引起混淆。
fquxozlt2#
您可以尝试使用
gestureRecognizer
之类的方法来使UIDatePicker消失:这是我在我的应用程序中使用的,所以当用户点击屏幕上的任何地方时,UIDatePicker就会消失!
pbpqsu0x3#
您也可以只为datePicker创建一个插座。@IBOutlet weak var datePicker:UIPickerView!
那么在函数中
1rhkuytd4#
下面是另一种方法,在Swift 5中只使用一个
IBOutlet
作为日期文本字段,其余的通过编程完成。YouTube上有一个很好的视频“Swift with Yash”介绍了这种实现方式:https://www.youtube.com/watch?v=8NngJrVFfUw
雨燕5号