使用UITextField和UITextView时textFieldShouldReturn方法的问题

Con*_*sed 6 iphone uitextfield uitextview becomefirstresponder uikeyboardtype

我有一个分组表视图,包含3个部分,每个部分每行.前两个部分行包含UITextField(Name和Subject是部分标题),最后一个包含UITextView(Message是部分标题),因为我想通过此控制器本身从用户获取一些数据.

这两个文本字段的returnKeyType为UIReturnKeyNext.对于UITextView,键盘中存在"返回"按钮以提供新行.所以我使用textFieldShouldReturn方法通过在UIKeyboard中按下这些返回类型按钮来导航到下一个单元格.

使用第一个文本字段(名称),下一个按钮可以正常工作.这里出现问题...如果我单击第二个单元格的下一个按钮,它将转到UITextView(最后一个单元格),其中一行向下.也就是说,光标从其原始位置移开一行.

我的代码是......

-(BOOL) textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    if (textField == nameTextField) {
        [subjectTextField becomeFirstResponder];    
    }
    else if(textField == subjectTextField) {
        [messageTextView becomeFirstResponder];
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使这项工作正常?提前致谢..

gam*_*mma 11

在测试很多东西的同时,我找到了一个简单但合适的解决方案:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ( [textField isEqual: nameTextField] )
    {
        [nameTextField resignFirstResponder];
        [messageTextView becomeFirstResponder];
        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

它处理nameTextField本身的重新签名,并向请求返回NO.