在 FSCalendar ObjC 中禁用对日期范围的选择
Disable selection to a range of dates in FSCalendar ObjC
我是 ObjC 的新手,我正在使用 FSCalendar 库。我需要禁用对一系列日期的选择。例如:从日期 - 2018-01-01 到日期 - 2018-12-30。我使用以下方法禁用过去的日期。
- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
请帮我禁用日期范围选择
我不太熟悉 FSCalendar,但我快速浏览了一下,您应该能够设置 startingDateToAvoid 和 endingDateToAvoid,然后检查从 shouldSelectDate 传入的日期是否在该范围内然后 return NO 如果是(不允许选择):
#import "ViewController.h"
#import "FSCalendar.h"
@interface ViewController () <FSCalendarDelegate, FSCalendarDataSource>
@property (strong, nullable) NSDate *startingDateToAvoid;
@property (strong, nullable) NSDate *endingDateToAvoid;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
self.startingDateToAvoid = [formatter dateFromString:@"2018-01-01"];
self.endingDateToAvoid = [formatter dateFromString:@"2018-12-30"];
// Do any additional setup after loading the view, typically from a nib.
}
- (BOOL)_shouldAllowSelectionOfDate:(NSDate *)date {
// if you want it to be inclusive of the starting/ending dates (i.e. they can't select 2018-01-01 as well) then uncomment this line below
/*if ([date isEqualToDate:self.startingDateToAvoid] || [date isEqualToDate:self.endingDateToAvoid]) {
return NO;
}*/
// if the date passed in is between your starting and ending date, we don't want to allow selection
if ([date compare:self.startingDateToAvoid] == NSOrderedDescending &&
[date compare:self.endingDateToAvoid] == NSOrderedAscending) {
return NO;
}
return YES;
}
- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition {
return [self _shouldAllowSelectionOfDate:date];
}
@end
我是 ObjC 的新手,我正在使用 FSCalendar 库。我需要禁用对一系列日期的选择。例如:从日期 - 2018-01-01 到日期 - 2018-12-30。我使用以下方法禁用过去的日期。
- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition
请帮我禁用日期范围选择
我不太熟悉 FSCalendar,但我快速浏览了一下,您应该能够设置 startingDateToAvoid 和 endingDateToAvoid,然后检查从 shouldSelectDate 传入的日期是否在该范围内然后 return NO 如果是(不允许选择):
#import "ViewController.h"
#import "FSCalendar.h"
@interface ViewController () <FSCalendarDelegate, FSCalendarDataSource>
@property (strong, nullable) NSDate *startingDateToAvoid;
@property (strong, nullable) NSDate *endingDateToAvoid;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
self.startingDateToAvoid = [formatter dateFromString:@"2018-01-01"];
self.endingDateToAvoid = [formatter dateFromString:@"2018-12-30"];
// Do any additional setup after loading the view, typically from a nib.
}
- (BOOL)_shouldAllowSelectionOfDate:(NSDate *)date {
// if you want it to be inclusive of the starting/ending dates (i.e. they can't select 2018-01-01 as well) then uncomment this line below
/*if ([date isEqualToDate:self.startingDateToAvoid] || [date isEqualToDate:self.endingDateToAvoid]) {
return NO;
}*/
// if the date passed in is between your starting and ending date, we don't want to allow selection
if ([date compare:self.startingDateToAvoid] == NSOrderedDescending &&
[date compare:self.endingDateToAvoid] == NSOrderedAscending) {
return NO;
}
return YES;
}
- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition {
return [self _shouldAllowSelectionOfDate:date];
}
@end