This:
if (type != CalendarViewTypeDay && type > minType) {
--type;
[self fade];
}
Should be at the end of - (void)doubleTap:(UITapGestureRecognizer *)recognizer
At the moment, year and month will ATM return the wrong type resulting in the month being the same type as the day.