2013-03-17 20 views
0

在我的應用程序中,我想限制一個特定的UIButton(連接到一個操作方法)可以按下每小時500次的次數。每次點擊該按鈕時,都會獲得一個虛擬點,並且我想將用戶可以賺取的點數限制在500個/小時。如何設置UIButton操作的每小時限制?

當達到500分限制時,我想用一條消息(一個UILabel)替換該按鈕,告訴用戶他/她必須等待「0:XX」分鐘。

我想像的是黑社會戰爭限制用戶的方式。

我發現這similar thread但它並不能解釋我特別想要什麼。

+0

如果不是射手或節奏遊戲或類似遊戲,誰會在一個小時內點擊500次按鈕?讓一些更有趣的事情。 – uchuugaka 2013-03-17 09:30:43

回答

2

如何使一個Array來存儲您button click歷史

當您單擊該按鈕,然後獲得的點擊Time,並把它添加到history array

可以檢查Time其中指數在當前Time之前的數組是500(如果不超過500,則意味着使用不應該等待)。

和calc的Current Time500 Before Time

如果duration >= 1hour之間的持續時間,什麼也不做 ;否則duration < 1hour,使按鈕啓用和retrun(1小時 - 持續時間),返回時間是用戶必須等待

0

你想要做的是有一個NSDate變量,當按鈕被按下時,將其設置爲[NSDate date](如果你想要它從第一次按下一小時,只設置它,如果點擊== 0)

然後你會想要一個NSTimer循環幾秒鐘或者你想要的精確度,然後檢查是否[[NSDate date] timeIntervalSinceDate:firstDate]>3600,這會重置點擊次數。

+0

你也希望將這個日期存儲在NSUserPreferences或某個文件中,並在應用程序打開時檢索它,以便通過關閉並重新打開應用程序不會作弊! – Jsdodgers 2013-03-17 08:54:10

+0

謝謝,@Jsdodgers,我會試試這個! – tagabek 2013-03-17 08:58:30

0

正如已經建議我會球泡上NSDate *now = [NSDate date];

的解決方案在每一個按鈕的點擊,行動方法中,您將創建一個日期對象喜歡這一點,並把它添加到一個數組(數組是一個類屬性或類內部變量)。

NSMutableArray *clicksOf60Minutes; // can be initialized with alloc/initWithCapacity:501; 

容量可能是550左右。做一些測試並找到合適的價值。這是一個性能和內存管理的問題。無論您選擇什麼樣的值進行初始化,您的代碼都可以工

添加一個(爲了將來的評估您添加一個),然後刪除數組中超過60分鐘的所有objectc。

do { 
    [clicksOf60Minutes removeObjectAtIndex:0]; 
} while ([[clicksOf60Minutes removeObjectAtIndex:0] timeIntervalSinceDate:firstDate]>3600]); 

不要對我喊,如果do/while是錯誤的循環和while更好。它應該是首先評估條件,然後僅在條件爲真時才執行循環體。如果我沒有太多錯誤,這是正確的。請仔細檢查一下。 一旦完成,您的數組只包含那些僅在過去60分鐘內發生的點擊時刻。現在檢查它的號碼。

if ([clicksOf60Minutes count] > 500) { 
    // add points 
} else { 
    // show altert 
}