Iphone 一种告诉用户何时按定时间隔完成键入的方法?

Iphone 一种告诉用户何时按定时间隔完成键入的方法?,iphone,uitextfield,uitextview,Iphone,Uitextfield,Uitextview,我想知道是否有一种方法可以判断用户是否在UITextField中键入了2秒钟 如果不可能,我想知道是否有方法可以判断用户在文本字段中键入时是否出错-例如: 有一个UITextView,其中包含NSArray中的对象,用户必须键入文本字段并匹配文本视图中的内容。如果他们犯了错误,它会告诉他们(我需要帮助)-注意:如果用户正确键入字符串,它会自动接受并继续下一个字符串-没有按钮提交字符串-它通过文本字段进行提交。这是可能的,但会涉及一些工作。您需要检查NSTimer和NSDate类以及UITextF

我想知道是否有一种方法可以判断用户是否在
UITextField
中键入了2秒钟

如果不可能,我想知道是否有方法可以判断用户在文本字段中键入时是否出错-例如:


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

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

检查
UITextFile
UITextView
的委托方法。当用户更改字段的状态时,可以调用几个方法。此外,如果您需要某个特定时间间隔的内容,可以启动
NSTimer

无论您在哪里处理文本更改,都可以启动
NSTimer
。如果在计时器触发之前输入了更多文本,您可以对其调用
-invalidate
以取消它,但如果计时器触发,则您知道没有输入任何文本。

在文本字段中注册文本更改事件。发生更改时,创建或更新计时器成员。如果计时器启动,则表示您的时间已过。清理时,使计时器无效

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

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

嗯,谢谢。你知道我还有什么办法可以做到这一点吗?(如果用户输入错误,请告知)如果您想使用计时器路线,可以使用Jeff Kelley的答案保存一些工作。为了判断他们是否键入错误,您可以让委托方法将正确答案与他们键入的内容进行比较。从整体情况来看,我建议从理解文本字段代表开始。因为所有可能的解决方案都会涉及到这一点。