一种告诉用户何时按时间间隔输入的方法?

时间:2010-07-18 00:49:20

标签: iphone uitextfield uitextview

我想知道是否有办法判断用户是否没有输入UITextField说2秒钟。

如果那是不可能的,我想知道是否有办法判断用户是否在文本字段中输入错误 - 例如:

有一个UITextView包含来自NSArray的对象,用户必须在文本字段中输入内容并匹配文本视图中的内容。如果他们犯了错误,它会告诉他们(我需要帮助) - 注意:如果用户正确键入字符串,它会自动接受它并继续下一个 - 没有按钮提交字符串 - 它通过文本字段做到这一点。

4 个答案:

答案 0 :(得分:2)

无论您何时处理文字更改,都可以开始NSTimer。如果在计时器触发之前输入了更多文本,您可以在其上调用-invalidate取消它,但如果计时器触发,则表示您没有输入任何文本。

答案 1 :(得分:1)

这是可能的,但它将涉及一些工作。您需要查看NSTimer和NSDate类以及UITextFieldDelegate协议。基本上,每次用户在文本字段中输入内容时,您都会获得一个委托方法。然后该方法缓存当前时间(通过[NSDate date])并启动一个持续时间为两秒的计时器。当计时器触发时,您可以触发一个方法来检查缓存的NSDate,以查看文本字段中的最后一个输入是否在最后两秒内。

答案 2 :(得分:0)

查看UITextFileUITextView的委托方法。当用户更改字段的状态时,可以实现几种可以实现的方法。此外,如果您需要特定时间间隔的某些内容,则可以启动NSTimer

答案 3 :(得分: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];
}