1

UIDatePickerModeCountDownTimerでUIDatePickerを使用して、ユーザーが期間を選択できるようにしています。

タイマー間隔を5分に設定すると、ユーザーは0時間:0分を選択できるようになります(これは悪いことです。これはiOS5または1分間隔のiOS6でも許可されていません)。

今、私は変更時にこれを行うことによってそれを修正しています:

-(void)timerValueChanged
{
    int clockInterval = workoutTimePicker.minuteInterval * 60;

    if (workoutTimePicker.countDownDuration < clockInterval) {
        workoutTimePicker.countDownDuration = clockInterval;
    }
}

しかし、それはローラーをジャンプさせます。ローラーをアニメーション化するにはどうすればよいですか?

4

2 に答える 2

2

現在はないsetCountDownDuration:animated:ので、を使用する必要がありますsetDate:animated:

NSDate議事録コンポーネントに希望の値を入力できるように、現在の日/月/年でオブジェクトを作成する必要があります。たとえば、次のようになりworkoutTimePicker.minuteIntervalます。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
    components.hour = 0;
    components.minute = workoutTimePicker.minuteInterval; // how much minutes you want
    components.second = 0;
NSDate * resetedMinsDate = [calendar dateFromComponents:components];        

したがって、その新しい日付で、ピッカーの日付を設定する必要があります。

[workoutTimePicker setDate:resetedMinsDate animated:YES];
于 2012-11-21T13:38:54.843 に答える
0

Carlos Ricardoの答えを試しているうちに、より簡潔な解決策を見つけました(swiftを使用)。

let minDate = Calendar.current.startOfDay(for: Date()) + clockInterval
datePicker.setDate(minDate, animated: true)
于 2020-01-17T16:50:42.753 に答える