我有一个带有 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/