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.