UIButton应该在24小时内触发一次方法

时间:2012-09-18 06:56:47

标签: ios4 uibutton

抱歉这个问题。我必须节省点击按钮的时间

第一次,然后将时间与未来时间进行比较,如果它大于或

等于我必须触发方法或警报的同时。

这是代码。

-(IBAction)checkInButtonClicked
{
    now = [NSDate date];
   [[NSUserDefaults standardUserDefaults]setObject:now forKey:@"theFutureDate"];

    NSTimeInterval timeToAddInDays = 60 * 60 * 24;
    theFutureDate = [now dateByAddingTimeInterval:timeToAddInDays];

    switch ([now compare:theFutureDate]){
    case NSOrderedAscending:{
    NSLog(@"NSOrderedAscending");

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:
    [NSString stringWithFormat:@"Oops! The Check In will activate after 24Hrs"] 
    delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil ];
    [alert show];
    }
    break;
    case NSOrderedSame:{
    NSLog(@"NSOrderedSame");
    [self insertPoints];
   }
    break;
    case NSOrderedDescending:{
    NSLog(@"NSOrderedDescending");
   }
    break;
   }
  }

但是这段代码并没有完全正常工作。任何人都可以帮帮我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题在于您总是将now与未来日期进行比较。这种比较总是有相同的结果。

如果我理解正确,你想完全相反。您必须在用户第一次点击按钮时比较now。因此,您只是第一次在NSUserDefaults设置日期,并在第二次和随后的时间进行比较。

- (IBAction)checkInButtonClicked {     
    NSDate *now = [NSDate date];
    NSDate *firstTimeClicked = [[NSUserDefaults standardUserDefaults] objectForKey:@"firstTimeClicked"];
    if (firstTimeClicked) {
        /* this is at least the second time the button has been clicked */        
        NSTimeInterval delta = [now timeIntervalSinceDate:firstTimeClicked];
        if (delta > 24 * 3600) {
            /* button clicked > 1 day ago */
        } else {
            /* button clicked <= 1 day ago */
        }
    } else {
        /* not present in NSUserDefaults, it's first click */
        [[NSUserDefaults standardUserDefaults] setObject:now forKey:@"firstTimeClicked"];   
    }
}