繁体   English   中英

iOS:Tapku日历:需要选择多个日期

[英]iOS: Tapku Calendar: Need to select multiple dates

我一直在检查一下Tapku Calendar代码,并在此处搜索并阅读了所有相关的问题和答案,但是似乎没有一个真正解决该问题的正确方法:如何以编程方式或通过点击来选择多个日期。 只需在两个相邻日期上放置一个简单的蓝色图块即可使我高兴:-)下面的帖子似乎有一个类似的问题,但是答案不起作用。 除非月份改变,否则代码中的位置不会被击中-并非完全符合我的期望。 最好的是selectDate的高层实现:它将选择多个日期。 但是,只要有一个对代码更熟悉的地方,在库中进行适当调整的地方便是一个不错的起点。 非常感激。

iOS:Tapku日历库-允许选择当月的多个日期

因此,在经过一些步骤之后,我有了使用锤子的基本方法。 我采用了TKCalendarMonthView.m-> selectDay:day方法的大部分代码。 我创建的方法基本上会创建一个新的TKCalendarMonthTiles对象并填写详细信息,然后在主要TKCalendarMonthTiles对象(自身)上添加子视图。 我标记了子视图,这样我就可以先删除它们(如果它们存在于方法的开头),因为我只想再选择一天(如果希望子视图保留在UI中,则可以保留这些子视图)。 我不跟踪日期或存储日期或任何其他内容,但是这满足了我的需求。

这个想法是简单地创建一个包含您要使用的正确平铺图像的视图,并且该视图包含实际的“日期”(如“ 14”)的文本标签,然后将这些视图作为子视图添加到self。 借用的代码会针对该日期图块位于网格中的“何处”进行所有计算,因此将视图绘制在正确的位置。 码:

- (void)markDay:(int)day {

// First, remove any old subviews
[[self viewWithTag:42] removeFromSuperview];
[[self viewWithTag:43] removeFromSuperview];

int pre = firstOfPrev < 0 ?  0 : lastOfPrev - firstOfPrev + 1;
int tot = day + pre;
int row = tot / 7;
int column = (tot % 7)-1;

TKCalendarMonthTiles *deliveryTile = [[TKCalendarMonthTiles alloc] init];
deliveryTile.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/MyDateTile.png")];
deliveryTile.currentDay.text = [NSString stringWithFormat:@"%d",day];

if(column < 0){
    column = 6;
    row--;
}

CGRect r = deliveryTile.selectedImageView.frame;
r.origin.x = (column*46);
r.origin.y = (row*44)-1;
deliveryTile.selectedImageView.frame = r;
deliveryTile.currentDay.frame = r;
[[deliveryTile selectedImageView] setTag:42];
[[deliveryTile currentDay] setTag:43];
[self addSubview:deliveryTile.selectedImageView];
[self addSubview:deliveryTile.currentDay];
} // markDay:

我在TKCalendarMonthView.m-> selectDay:day的末尾以及TKCalendarMonthView.m->-reactToTouch:down的末尾调用此方法。 到目前为止,有限的测试还不错。 弄清楚为什么时区设置会继续思考明天(我在太平洋时区)。

干杯,迈克尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM