返回按下时从UITextField移动到UITextView

时间:2014-05-08 19:08:12

标签: ios uitextfield uitextview resignfirstresponder becomefirstresponder

我的应用中有几个文字视图。除了一个之外的所有都是UITextField,另一个是UITextView,位于其他的中间。这是因为本节需要更多空间供用户输入并查看他们输入的所有内容。我已将其设置为当用户按下键盘上的下一个时,它将使用以下代码转到下一个字段:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == firstName) {
        [firstName resignFirstResponder];
        [lastName becomeFirstResponder];
    } else if (textField == lastName) {
        [lastName resignFirstResponder];
        [theRequest becomeFirstResponder];
    }
    else if (textField == theRequest) {
        [theRequest resignFirstResponder];
        [theDetails becomeFirstResponder];
    }
    else if (textField == theDetails) {
        [theDetails resignFirstResponder];
        [textdate becomeFirstResponder];
    }
    else if (textField == textdate) {
        [textdate resignFirstResponder];
        [location becomeFirstResponder];
    }
    else if (textField == location) {
        [location resignFirstResponder];

    }
    return YES;
}

一切顺利,直到我到达UITextView。当我在那里点击它时,它只是将光标向下推一行。我怎样才能让它回复到下一个字段?

此外,在位置中单击“下一步”时,它将返回到名字。怎么设置才能解除键盘?

3 个答案:

答案 0 :(得分:0)

您可以尝试两种方式:

1)使用功能

-(BOOL)textViewShouldReturn:(UITextView *)textView

实现所需的行为。

2)阅读本文:

How to dismiss keyboard for UITextView with return key?

并根据您的需要调整这些解决方案。

答案 1 :(得分:0)

当我有多个文本字段时,我喜欢做的一件事是使用标记而不是逐个检查。首先,在interface builder / storyboard中,按升序设置每个tag的{​​{1}}属性,(如果从1开始则更好)。比,你的UITextField减少到这样的东西。

textFieldShouldReturn:

关于你从- (BOOL) textFieldShouldReturn:(UITextField *)textField { UIView * nextView = [self.scrollView viewWithTag:textField.tag + 1]; if ([nextView respondsToSelector:@selector(becomeFirstResponder)]) [nextView becomeFirstResponder]; return NO; } 转到下一个字段的问题,我同意谢尔盖的第二个选项

答案 2 :(得分:0)

我知道这是一个老帖子,但是因为我设法得到答案,我想我分享了。

- (BOOL) textFieldShouldReturn:(UITextField *)textField 
{
    [textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1];

    return YES;
}

我被告知使用afterDelay:0.1它会对设备产生影响,使用模拟器我们可以使用afterDelay:0.0