我有一个分组表视图,其中包含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;
}
如何才能使这项工作正常?在此先感谢..
答案 0 :(得分:11)
在测试很多东西时,我找到了一个简单但合适的解决方案:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if ( [textField isEqual: nameTextField] )
{
[nameTextField resignFirstResponder];
[messageTextView becomeFirstResponder];
return NO;
}
return YES;
}
它处理nameTextField本身的重新签名,并向请求返回NO。
答案 1 :(得分:0)
基本上发生的事情是,当点击返回时,您将文本视图作为第一个响应者,并将返回添加到文本视图中。这就是光标到达第二行的原因。尝试在textViewDidChange:delegate方法中执行此操作:
- (void)textViewDidChange:(UITextView *)textView {
if(textView.text == @"\r") {
textView.text = @"";
}
答案 2 :(得分:-1)
在this link中,您将获得问题的解决方案。在此给出了文本编辑完成时我们如何隐藏键盘。