web-dev-qa-db-ja.com

UIDatePickerの日付を特定の時間から制限します。制限された年齢制限への入力DOBなど

私のコードには、ユーザーがタップするとUIDatePickerが開き、ユーザーが生年月日まで簡単かつ効率的にスクロールできるようにするUITextFieldがあります。明らかに、現在のようにUIDatePickerを2015年以上にスクロールさせたくはありません。生年月日入力フィールドなので、入力を16年以上に制限できる必要もあります。どうすればよいですか?

class SignUpViewController: UIViewController, UITextFieldDelegate {

    var datePicker:UIDatePicker!

    @IBOutlet weak var dateTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 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
12
Martin Q

DateByAddingUnitを使用し、現在の日付から16年を引くと、次のようにdatePickerの最大日付を設定できます。

datePicker.maximumDate = NSCalendar.currentCalendar().dateByAddingUnit(.Year, value: -16, toDate: NSDate(), options: [])

Xcode10.2.1•Swift 5

datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: -16, to: Date())
31
Leo Dabus