首页 > 解决方案 > 将文本视图退出为第一响应者,并在按下回车键时将文本字段设为第一响应者

问题描述

我有一个带有文本视图和文本字段的应用程序,用户在视图中输入问题并在字段中输入答案。我希望它在用户按下返回时将视图作为第一响应者退出并让该字段成为第一响应者,我尝试了下面的代码,但它似乎不起作用,我不知道为什么

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if text=="\n"{
        questionTV.resignFirstResponder()
        answerTF.becomeFirstResponder()
        return false
    }
    return true
}

标签: iosswift

解决方案


我试过以下代码:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        guard text == "\n" else { return true }

        textView.resignFirstResponder()
        textField.becomeFirstResponder()

        return false
    }

它按预期工作。

我想,原因可能在其他地方。你有更多细节要分享吗?

您是否设置了文本视图的委托?您是否在方法内部的断点处停止shouldChangeTextIn

更新:

在评论中很明显你遵守了错误的协议。您需要符合UITextViewDelegate而不是UITextFieldDelegate. 如果您需要它来处理文本字段,您可能希望保持UITextFieldDelegate一致性。


推荐阅读