iPhoneアプリでCVCalendarを使用していて、範囲外の日付を無効にしたい場合。カレンダーの日付は、今後4〜14日間の場合にのみ有効にしてください。私はdisableOutsideDays()
という機能を持っていますが、カレンダービューが最初に表示されたときのように散発的にしか動作しますが、ユーザーが次のまたは前の月にスクロールするときは機能しません。CVCalendar月を変更するとiOS無効日が機能しない
func disableOutsideDays() {
let calendar = NSCalendar.currentCalendar()
for weekV in calendarView.contentController.presentedMonthView.weekViews {
for dayView in weekV.dayViews {
if calendar.compareDate(dayView.date.convertedDate()!, toDate: NSDate(), toUnitGranularity: .Day) == .OrderedAscending || calendar.compareDate(dayView.date.convertedDate()!, toDate: calendar.dateByAddingUnit(.Day, value: 14, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))!, toUnitGranularity: .Day) == .OrderedDescending {
dayView.userInteractionEnabled = false
dayView.dayLabel.textColor = calendarView.appearance.dayLabelWeekdayOutTextColor
}
}
}
}
私はviewDidLoad
内部だけでなく、didShowNextMonthView
とdidShowPreviousMonthView
ことを呼び出します。奇妙な部分は、翌月のスクロールですべての日を有効にして(私が欲しいものとは反対に)表示することができますが、現在の月にスクロールして次の月に戻って再び無効にしていることです。
では動作しません、あなたはgithubの上の質問をしようとしましたか? –