Iphone 将UITextField与UITextView一起使用时,textFieldShouldReturn方法存在问题
我有一个分组表视图,它包含3个部分,每个部分的每一行。前两个部分行包含UITextField(名称和主题是部分标题),最后一个包含UITextView(消息是部分标题),因为我希望通过此控制器本身从用户处获取一些数据 这两个文本字段的returnKeyType为UIReturnKeyNext。对于UITextView,“返回”按钮位于键盘中,用于输入新行。所以我使用textFieldShouldReturn方法,通过按UIKeyboard中的这些返回类型按钮导航到下一个单元格 “下一步”按钮将与第一个文本字段(名称)配合使用。问题来了。。。如果单击第二个单元格的“下一步”按钮,它将转到UITextView(最后一个单元格),并向下一行。也就是说,光标从其原始位置移动一行 我的代码是Iphone 将UITextField与UITextView一起使用时,textFieldShouldReturn方法存在问题,iphone,uitextfield,uitextview,becomefirstresponder,uikeyboardtype,Iphone,Uitextfield,Uitextview,Becomefirstresponder,Uikeyboardtype,我有一个分组表视图,它包含3个部分,每个部分的每一行。前两个部分行包含UITextField(名称和主题是部分标题),最后一个包含UITextView(消息是部分标题),因为我希望通过此控制器本身从用户处获取一些数据 这两个文本字段的returnKeyType为UIReturnKeyNext。对于UITextView,“返回”按钮位于键盘中,用于输入新行。所以我使用textFieldShouldReturn方法,通过按UIKeyboard中的这些返回类型按钮导航到下一个单元格 “下一步”按钮将与
-(BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
if (textField == nameTextField) {
[subjectTextField becomeFirstResponder];
}
else if(textField == subjectTextField) {
[messageTextView becomeFirstResponder];
}
return YES;
}
我该怎么做才能使这项工作顺利进行?提前感谢。基本上,当点击return时,您将文本视图作为第一响应者,并将返回添加到文本视图中。这就是光标移到第二行的原因。尝试在textViewDidChange:delegate方法中执行此操作:
- (void)textViewDidChange:(UITextView *)textView {
if(textView.text == @"\r") {
textView.text = @"";
}
在测试很多东西时,我发现了一个简单但合适的解决方案:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if ( [textField isEqual: nameTextField] )
{
[nameTextField resignFirstResponder];
[messageTextView becomeFirstResponder];
return NO;
}
return YES;
}
它处理nameTextField本身的重新命名,并向请求返回NO。此解决方案的工作方式与编写方式不同-它应该使用ISEQUALTOSTRING。此解决方案的另一个问题是,它只适用于空的UITextView。如果你有一个带有文本的,它仍然会在光标的旧位置插入一个换行符。请参考链接中lorean的答案。[1]: