pra*_*bhu 5 uitextfield user-inactivity ios
当用户输入时UITextfield,他停止了2秒钟,光标仍然亮着UITextfield,那么我们如何识别这个事件呢?即我想检查编辑是否结束,而不是从第一响应者那里辞职UITextField.这样做的方法是什么?
Hem*_*ang 11
是的,我们可以检查一下!与UITextField代表, - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
- (void) callMeAfterTwoSeconds {
NSLog(@"I'll call after two seconds of inactivity!");
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[NSRunLoop cancelPreviousPerformRequestsWithTarget:self];
[self performSelector:@selector(callMeAfterTwoSeconds) withObject:nil afterDelay:2.0];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
当您正在键入(从键盘上敲击键)时,它将取消之前的callMeAfterTwoSeconds功能调用,一旦停止,它会在延迟2秒后将其设置为呼叫,是的,它将在2秒后调用.
更新:
即使您可以将该文本字段作为对象传递,performSelector以了解哪个文本字段处于非活动状态,因为您的callMeAfterTwoSeconds功能将是,
- (void) callMeAfterTwoSeconds:(UITextField *)textfield {
if(textfield == txtUserName) {
NSLog(@"User textfield has NO activity from last two seconds!"); }
}
Run Code Online (Sandbox Code Playgroud)
转到您的连接检查器,UITextField并将"已发送事件"列表中的"编辑已更改"连接到IBAction您选择的预定义.或者,如果您不使用Storyboard,则可以以编程方式执行此操作.
[youTextField addTarget:self action:@selector(textFieldInputDidChange:) forControlEvents:UIControlEventEditingChanged];
Run Code Online (Sandbox Code Playgroud)
现在,IBAction每次用户更改角色时,您刚刚连接的都会被触发UITextField.创建一个ivar 定时器.现在每次都IBAction被调用,启动计时器,如果它在没有被新呼叫重新启动的情况下达到2秒,你知道用户没有输入/删除的值UITextField.
| 归档时间: |
|
| 查看次数: |
6063 次 |
| 最近记录: |