【问题标题】:How to change event of return key? [duplicate]如何更改返回键的事件? [复制]
【发布时间】:2013-08-16 04:56:33
【问题描述】:

我有 4 个文本字段,我想通过单击返回键来执行以下操作 -

1-当我在一个字段中输入并按回车键时,光标应该跳到下一个

文本字段。

谢谢。

【问题讨论】:

    标签: ios cocoa-touch uitextfield


    【解决方案1】:

    实现UITextField 委托并将标签值设置为系列中的所有文本字段。像1,2,3..等等。然后,确保scrollView 和 textField 标记值不冲突。

    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        int nextTextFieldTag = textField.tag+1;
        UITextField *textFieldd = (UITextField*)[self.view viewWithTag:nextTextFieldTag];
        if (textFieldd!=nil) {
            if ([textField isKindOfClass:[UITextField class]]) {
                [textFieldd becomeFirstResponder];
                return NO;
            }
        }
        return YES;
    }
    

    【讨论】:

    • 另外,我有一个用于在文本字段之后保存信息的按钮,所以最后应该自动执行该功能,谢谢
    • 我对您的代码有一些顾虑。 1) 不是真正关心更多的普遍问题,什么是 scr? 2) 如果我有一个标签为 2 的UITextField,而我有一个标签为 2 的 UIView,你会怎么做,它会为viewWithTag 返回哪个?你会如何处理这种情况?在哪里检查以确保它是UITextField
    • @Popeye scr is scrollView....
    • @Rajneesh071 我仍然对viewWithTag 感到担忧,但这会奏效。
    • @Popeye 确保 scrollView 和 textField 标签值不冲突。
    【解决方案2】:

    试试这个

    将 4 个文本字段作为 textfield1,textfield2,textfile3,textfield4 。

    在文本域委托方法中

     - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
    
        if([textField isEqual:textfield1]) 
        {
         [textfield2 becomeFirstResponder];
          return NO;
        }
    
        else if([textField isEqual:textfield2]) 
        {
         [textfield3 becomeFirstResponder];
          return NO;
        }
    
            // Do for other textfields
        return YES;
    }
    

    【讨论】:

    • 这行不通。因为 nextTextfield 永远不会是当前返回的;)
    • 所以请建议我正确的代码谢谢
    • 先生,什么是 textfield 和 textfield1 ??
    • 我已经编辑了答案。立即检查。
    • 保持不变永远不会是下一个文本字段。检查我的答案
    【解决方案3】:

    您只需要知道下一个 TextField 应该是什么并实现 UITextFieldDelegateProtocol 尤其是 - (BOOL)textFieldShouldReturn:(UITextField *)textField

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 中只需找出下一个TextField 并执行[nextTextField becomeFirstResponder];


    所以- (BOOL)textFieldShouldReturn:(UITextField *)textField 方法可能如下所示:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
    
        if ([textField isEqual:firstTextField]) {
            [secondTextField becomeFirstResponder];
        } 
    
        //When last textfield dismiss the keyboard
        else if ([textField lastTextField]) {
            [textField resignFirstResponder];
        }
    
        return NO;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多