我有10个文本框,每个文本框只能输入一个字符。当一个字符输入到每个文本框时,焦点应该移到下一个文本框。同样地,当我通过按退格键或删除键从文本框中删除字符时,我需要将焦点移动到前一个文本框。如果我能够获取到键盘按下的事件,我就可以做到这一点。目前我找不到任何键盘按下事件的示例。
我有10个文本框,每个文本框只能输入一个字符。当一个字符输入到每个文本框时,焦点应该移到下一个文本框。同样地,当我通过按退格键或删除键从文本框中删除字符时,我需要将焦点移动到前一个文本框。如果我能够获取到键盘按下的事件,我就可以做到这一点。目前我找不到任何键盘按下事件的示例。
实现协议中的委托方法,就能实现您想要的功能。
您可以通过使用becomeFirstResponder
方法将焦点设置到所需的文本字段上。
查看委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
每当用户在文本字段中键入新字符或删除现有字符时,文本字段都会调用此方法。
这样就可以解决您的问题了。
.Text
属性,它将具有旧值,而我不确定你应该如何获取在返回“true”后它将拥有的值。 - Kirk Woll根据Aadhira的答案,但考虑到Kirk Woll的评论,你可以使用stringByReplacingCharactersInRange
生成最新文本:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *value = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSLog(@"value: %@", value);
return YES;
}
你需要使用 textfieldDelegate
方法。
在你的 textFieldShouldReturn
方法中,你需要设置你的响应者,例如:
if (textfield == textField1)
{
[textField2 becomeFirstResponder];
}
else if (textField == textField2)
{
[textField3 becomeFirstResponder];
}
else
{
[textField3 resignFirstResponder];
}
return YES; // as method return type is BOOL.
为了给您指引:
提示:您可以使用[mainView viewWithTag:XX]
快速选择所需的文本字段。
每次更改文本时,您都可以检查文本字段的文本属性,它将告诉您按下了哪个按钮。
你需要在你的代码中实现UITextFieldDelegate协议,这个方法会告诉你何时开始编辑文本框。
– textFieldShouldBeginEditing:
你可以根据你的需求在这个方法中设置if条件...