ios - 将 TextView 辞去为第一响应者并在按返回时将文本字段设为第一响应者

标签 ios swift

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

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

最佳答案

我试过下面的代码:

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

        textView.resignFirstResponder()
        textField.becomeFirstResponder()

        return false
    }

它按预期工作。

我想,原因可能在别的地方。您有更多详细信息要分享吗?

您是否设置了 TextView 的委托(delegate)?您是否在 shouldChangeTextIn 方法内的断点处停止?

更新:

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

关于ios - 将 TextView 辞去为第一响应者并在按返回时将文本字段设为第一响应者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761555/

相关文章:

ios - 开头的函数返回值

ios - 延迟的 Alamofire 请求

iOS Swift3 - 转换坐标

ios - 警报和 segue 以相同的方法不能一起工作

ios - 崩溃报告.. 任何线索在哪里寻找?

ios - Crashlytics Framework 未检测到 iOS 上的信息 plist

ios - 为什么 AWSCognitoCredentialsProvider.getIdentityId().continueWith(block :) not run its block?

c++ - Xcode 5.1 std::string 连接在发布版本中的 iOS 5.1 设备上崩溃

ios - 在 UINavigationViewController 上推送(推送 segue) View 后方向不会改变

ios - 无法将 firebase 数据库下载到我的应用程序