2010-07-18 31 views
2

我想知道是否有方法可以告訴用戶是否在UITextField中輸入了2秒鐘。一種告訴用戶何時完成在定時間隔內輸入的方法?

如果這是不可能的,我想知道是否有一種方式來告訴我們,如果用戶在用戶的文本字段中的錯誤類型 - 例如:

有一個UITextView其中包含從NSArray對象用戶必須輸入文本字段並匹配文本視圖上的內容。如果他們犯了一個錯誤,它會告訴他們(我需要幫助的) - 注意:如果用戶正確鍵入字符串,它會自動接受它並繼續下一個 - 沒有按鈕提交字符串 - 它通過文本字段來完成。

回答

1

這是可能的,但它會涉及一些工作。您需要查看NSTimer和NSDate類以及UITextFieldDelegate協議。基本上,每次用戶在文本字段中輸入內容時,都會觸發委託方法。該方法然後緩存當前時間(通過[NSDate日期])並啓動一個持續時間爲2秒的計時器。當計時器觸發時,它會觸發一個方法來檢查緩存的NSDate,以查看文本字段中的最後輸入是否在最後兩秒內。

+0

嗯,謝謝。你知道我能做到這一點嗎? (告訴用戶輸入錯誤的方式) – Alex 2010-07-18 01:01:25

+0

如果你想去定時器路線,你可以用Jeff Kelley的答案保存一些工作。 爲了告訴他們是否輸入錯誤,可以使用委託方法將正確的答案與輸入的內容進行比較。 考慮到你的整體情況,我建議通過理解文本字段的代表開始。因爲所有可能的解決方案都將涉及這一點。 – 2010-07-18 01:28:46

0

查看代表方法UITextFileUITextView。當用戶更改字段的狀態時,可以實現幾種方法。另外,如果您需要特定的時間間隔,您可以啓動NSTimer

2

無論您處理文本更改,您都可以啓動NSTimer。如果在定時器觸發前輸入了更多的文本,您可以撥打-invalidate來取消它,但如果定時器觸發,則說明沒有輸入文本。

0

註冊文本字段上的文本更改事件。發生更改時,創建或更新計時器成員。如果定時器啓動,您的時間已過。清理時,使計時器無效。

-(void) textFieldChanged:(id)sender { // UIControlEventEditingChanged 
    NSTimeInterval tooLong = 2.0; 

    if (myTimer) [myTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:tooLong]]; 
    else myTimer = [[NSTimer scheduledTimerWithTimeInterval:tooLong ... repeats:NO] retain]; 
} 
相關問題