按鈕點擊後顯示不可用狀態(如換圖),並禁用 10 分鐘防止重複點擊。
button.enabled = NO;performSelector:withObject:afterDelay: 延遲 10 分鐘(600 秒)重新啟用。- (IBAction)buttonTapped:(UIButton *)sender {
sender.enabled = NO;
[sender setBackgroundImage:[UIImage imageNamed:@"button_non_active.png"] forState:UIControlStateDisabled];
[self performSelector:@selector(enableButton:) withObject:sender afterDelay:10.0 * 60.0];
}
- (void)enableButton:(UIButton *)sender {
sender.enabled = YES;
[sender setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
}
UserDefaults,啟動時檢查並恢復狀態。dispatch_after 替代 performSelector 更符合現代 GCD 風格。dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * 60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
sender.enabled = YES;
});