2010-07-18 36 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]; 
} 
相关问题