UITextField中的Keypressed事件

时间:2011-10-24 05:40:51

标签: iphone ios uitextfield

我有10个文本字段,其中我只能在每个文本字段中输入一个字符。在每个文本字段中输入字符后,焦点应移至下一个字段。类似地,当我通过按退格键或删除来删除文本字段中的字符时,我需要将焦点转到上一个文本字段。如果我能得到keypressed事件,我可以做到这一点。现在我无法找到任何按键事件示例。

5 个答案:

答案 0 :(得分:8)

实施UITextFieldDelegate

在协议中实现委托方法。你可以实现你想要的东西。

您可以使用方法becomeFirstResponder将焦点设置为所需的文本字段。

查看委托方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

只要用户在文本字段中键入新字符或删除现有字符,文本字段就会调用此方法。

这样可以解决您的问题。

答案 1 :(得分:4)

根据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;
}

答案 2 :(得分:0)

只是为了给你指示:

  1. 为每个文本字段分配标记。
  2. Implement UITextFieldDelegate。您可以使用所有方法来检测文本字段中发生的任何事件。在每种方法中,您都可以检查标签并正确移动焦点。
  3. 提示:您可以使用[mainView viewWithTag:XX]快速选择所需的文本字段。

    每次更改文本时,您都可以检查文本字段的文本属性,它将为您提供按下按钮的答案。

答案 3 :(得分:0)

你必须在你的代码中实现UITextFieldDelegate协议,这个方法会告诉你何时开始在文本字段中开始编辑

- textFieldShouldBeginEditing:

您可以根据您的要求在此方法中设置if条件......

答案 4 :(得分:0)

您必须使用textfieldDelegate方法。

textFieldShouldReturn方法中,您必须将响应者设置为

if (textfield == textField1)
{
    [textField2 becomeFirstResponder];
}
else if (textField == textField2)
{
    [textField3 becomeFirstResponder];
}
else
{
    [textField3 resignFirstResponder];
}

return YES; // as method return type is BOOL.