【问题标题】:iOS: Tapku Calendar: Need to select multiple datesiOS:Tapku日历:需要选择多个日期
【发布时间】:2012-04-28 06:07:51
【问题描述】:

我一直在检查 Tapku 日历代码,并在这里搜索并阅读了所有相关问题和回复,但似乎没有一个真正为问题提供正确的解决方案:如何以编程方式或通过点击选择多个日期.只需在两个相邻日期上放置一个简单的蓝色瓷砖就会让我高兴:-) 下面的帖子似乎有一个类似的问题,但答案不起作用。除非月份发生变化,否则代码中的位置不会被命中 - 这不正是我想要的。更好的是 selectDate 的更高级别的实现:它将选择多个日期。但是,如果任何人都更熟悉代码,那么在库中调整的正确位置将是一个很好的起点。非常感谢。

iOS: Tapku calendar library - allow selecting multiple dates for current month

【问题讨论】:

    标签: ios date calendar tapku


    【解决方案1】:

    因此,在逐步浏览代码之后,我有了这个使用锤子的基本方法。我采用了 TKCalendarMonthView.m->selectDay:day 方法中的大部分代码。我创建的方法基本上是创建一个新的 TKCalendarMonthTiles 对象并填写详细信息,然后将子视图添加到主 TKCalendarMonthTiles 对象(self)上。我标记了子视图,因此如果它们在方法开始时存在,我可以首先删除它们,因为我只想再选择一天(如果您希望子视图保留在 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 的末尾调用此方法。到目前为止,有限的测试非常好。去弄清楚为什么时区设置一直在考虑明天(我在太平洋时区)。

    干杯,迈克尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多