延迟IBAction按钮

时间:2015-05-01 17:00:11

标签: ios objective-c cocoa-touch uibutton uikit

我想将此按钮延迟23小时,即82800秒。它应该工作正常,按钮确实在一次单击后延迟,但是当我切换到另一个视图控制器,或重新进入应用程序时,按钮延迟功能无法工作,因为它切换到另一个视图控制器后弹出回单击按钮或重新启动申请。

这是代码:

- (IBAction)save:(id)sender
{

    UIButton *theButton = (UIButton *) sender;
    theButton.enabled = NO;
    [self performSelector:@selector(enableButton:) withObject:theButton afterDelay:82800.0];
}

- (void)enableButton:(UIButton *)button
{
    button.enabled = YES;
}

我正在寻找允许此按钮延迟23小时的代码,无论我是退出应用程序还是切换到另一个视图控制器。

请帮助

1 个答案:

答案 0 :(得分:1)

您应该使用NSUserDefaults。调用save:方法时,请检查当前日期[NSDate date]并将其保存为用户默认值。然后(当时间已经过去),您从默认值中检索保存的日期并将其与当前日期进行比较。如果已经过了23个小时,则启用按钮

更新:

这是你如何保存日期:

- (IBAction)save:(id)sender
{

UIButton *theButton = (UIButton *) sender;
theButton.enabled = NO;
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"savedDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
}

然后(将来)你获取保存的日期:

NSDate* savedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedDate"];

if ([[NSDate date] timeIntervalSinceDate:savedDate] >= 82800.0 )
{
    theButton.enabled = YES;// you need to keep the reference to the button
}