在我的應用程序中,我想限制一個特定的UIButton(連接到一個操作方法)可以按下每小時500次的次數。每次點擊該按鈕時,都會獲得一個虛擬點,並且我想將用戶可以賺取的點數限制在500個/小時。如何設置UIButton操作的每小時限制?
當達到500分限制時,我想用一條消息(一個UILabel)替換該按鈕,告訴用戶他/她必須等待「0:XX」分鐘。
我想像的是黑社會戰爭限制用戶的方式。
我發現這similar thread但它並不能解釋我特別想要什麼。
在我的應用程序中,我想限制一個特定的UIButton(連接到一個操作方法)可以按下每小時500次的次數。每次點擊該按鈕時,都會獲得一個虛擬點,並且我想將用戶可以賺取的點數限制在500個/小時。如何設置UIButton操作的每小時限制?
當達到500分限制時,我想用一條消息(一個UILabel)替換該按鈕,告訴用戶他/她必須等待「0:XX」分鐘。
我想像的是黑社會戰爭限制用戶的方式。
我發現這similar thread但它並不能解釋我特別想要什麼。
如何使一個Array
來存儲您button click
歷史
當您單擊該按鈕,然後獲得的點擊Time
,並把它添加到history array
可以檢查Time
其中指數在當前Time
之前的數組是500(如果不超過500,則意味着使用不應該等待)。
和calc的Current Time
和500 Before Time
如果duration >= 1hour
之間的持續時間,什麼也不做 ;否則duration < 1hour
,使按鈕啓用和retrun(1小時 - 持續時間),返回時間是用戶必須等待
你想要做的是有一個NSDate
變量,當按鈕被按下時,將其設置爲[NSDate date]
(如果你想要它從第一次按下一小時,只設置它,如果點擊== 0)
然後你會想要一個NSTimer循環幾秒鐘或者你想要的精確度,然後檢查是否[[NSDate date] timeIntervalSinceDate:firstDate]>3600
,這會重置點擊次數。
正如已經建議我會球泡上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
}
如果不是射手或節奏遊戲或類似遊戲,誰會在一個小時內點擊500次按鈕?讓一些更有趣的事情。 – uchuugaka 2013-03-17 09:30:43