Отключить выбор для диапазона дат в FSCalendar ObjC - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в ObjC и использую библиотеку FSCalendar. Мне нужно отключить выбор для диапазона дат. Например: с даты - 2018-01-01 и до даты - 2018-12-30. Я использовал следующий метод для отключения прошлых дат.

- (BOOL)calendar:(FSCalendar *)calendar shouldSelectDate:(NSDate *)date atMonthPosition:(FSCalendarMonthPosition)monthPosition

Пожалуйста, помогите мне отключить выбор диапазона дат

1 Ответ

0 голосов
/ 30 августа 2018

Я не очень знаком с FSCalendar, но я быстро осмотрелся, и вы должны просто иметь возможность установить параметры initialDateToAvoid и ОкончаниеDateToAvoid, а затем проверить, находится ли дата, переданная из shouldSelectDate, в этом диапазоне, а затем вернуть НЕТ, если оно (запретить выбор):

#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
...