1

日付を制限しようとして問題が発生しました。そのように日付を設定するとself.datePicker.maximumDate = [NSDate date];、現在より後の日付のみが灰色になりますが、ユーザーはこの最大日付より後の日付を選択できます。

そのため、ピッカーの値が変更されたときに、選択した日付を現在の日付よりも前に比較して編集します。

両方のソリューションを使用すると、奇妙な動作が発生しました。

- (IBAction)pickerValueChanged:(id)sender {

    dispatch_async(dispatch_get_main_queue(), ^{
        UIDatePicker *datePicker = (UIDatePicker *)sender;

        if ([self.datePicker.date compare:[NSDate date]] == NSOrderedDescending) {

            datePicker.date = [NSDate date];
        }

    });
}

この関数は、日付ピッカーからの日付値が変更されたときにトリガーされます。最小日付と最大日付を設定すると、奇妙な動作が発生しました。何か案が?

編集:

4

5 に答える 5

4

xcodeまたはプログラムで最大日付を設定できます。

1.プログラムで、以下のコード行を使用してピッカーの最大日付を設定できます。

[self.yourPickerView setMaximumDate: [NSDate date]];

このコード行は、ピッカーで選択できる最大の日付として現在の日付を設定します。

于 2015-11-24T09:28:52.883 に答える
2

はい、.xib とピッカー設定を使用して、最小日付と最大日付を設定できます

ここに画像の説明を入力

于 2013-05-07T07:09:31.623 に答える
1

はい、最大日付と最小日付を UIDatePickerView に設定できます

以下は別のスタックオーバーフローリンクです

UIDatePicker、今日の日付に基づいて最大日付と最小日付を設定

于 2013-05-07T06:37:29.097 に答える
-1
- (IBAction) datePickerChanged:(id)sender {
// When `setDate:` is called, if the passed date argument exactly matches the Picker's date property's value, the Picker will do nothing. So, offset the passed date argument by one second, ensuring the Picker scrolls every time.
NSDate* oneSecondAfterPickersDate = [picker.date dateByAddingTimeInterval:1] ;
if ( [picker.date compare:picker.minimumDate] == NSOrderedSame ) {
    NSLog(@"date is at or below the minimum") ;
    picker.date = oneSecondAfterPickersDate ;
}
else if ( [picker.date compare:picker.maximumDate] == NSOrderedSame ) {
    NSLog(@"date is at or above the maximum") ;
    picker.date = oneSecondAfterPickersDate ;
    }
}
于 2013-08-09T08:41:03.650 に答える