我想创建一个UITextField,当触摸时将以ActionSheet方式激活UIDatePicker。虽然有一些资源在那里,它没有显示如何以这种方式格式化日期。下面的代码是我从stackoverflow中找到的最好的代码,但是没有给出日期的格式:
import UIKit
class SignUpViewController: UIViewController, UITextFieldDelegate {
var datePicker:UIDatePicker!
@IBOutlet weak var dateTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// UI DATE PICKER SETUP
var customView:UIView = UIView(frame: CGRectMake(0, 100, 320, 160))
customView.backgroundColor = UIColor.clearColor()
datePicker = UIDatePicker(frame: CGRectMake(0, 0, 320, 160))
datePicker.datePickerMode = UIDatePickerMode.Date
customView.addSubview(datePicker)
dateTextField.inputView = customView
var doneButton:UIButton = UIButton (frame: CGRectMake(100, 100, 100, 44))
doneButton.setTitle("Done", forState: UIControlState.Normal)
doneButton.addTarget(self, action: "datePickerSelected", forControlEvents: UIControlEvents.TouchUpInside)
doneButton.backgroundColor = UIColor .grayColor()
dateTextField.inputAccessoryView = doneButton
}
func datePickerSelected() {
dateTextField.text = datePicker.date.description
}
什么不工作?日期不是你想要的格式?看看NSDateFormatter
:
- 不需要为选择器创建包装器视图:只需直接分配给
inputView
- 不要使用
UITextField
:毕竟它不是文本字段!这不仅很危险,因为您不能轻易地通过外部键盘禁用输入,而且语义也不利于可访问性。相反,创建一个自定义UIControl
子类并使用标签显示文本。你可以在这里分配输入视图。