我有2个独立的textView,要在它们各自点击时触发一个事件。 termTextView可以很好地触发,但是当先触发termTextView时,点击它时不会触发definitionTextView。我该怎么做才能解决此问题?
ALL
答案 0 :(得分:1)
这不是您使用UITextViewDelegate
的方式。当在其委托设置为此目标的任何文本视图上开始编辑时,将调用相同的委托方法。您需要检查一下它的内部,以了解哪个文本视图调用了它。
func textViewDidBeginEditing(_ textView: UITextView) {
if textView === termTextView {
// do something to termTextView
} else if textView === definitionTextView {
// do something to definitionTextView
} else {
// handle other text views
}
}
答案 1 :(得分:0)
您需要将private func textViewDidBeginEditing2(_ definitionTextView: UITextView)
更改为func textViewDidBeginEditing(_ definitionTextView: UITextView)
答案 2 :(得分:0)
正如Text Programming Guide用于跟踪多个textField和textViews编码所建议的那样,最好使用一个委托方法来管理它们,而不是使用单独的自定义委托方法(可能在必要的情况下除外)。您可以使用两种不同的样式来遵循本指南
1。为每个TextView设置一个标记,您的委托方法应类似于:
func textViewDidBeginEditing(_ textView: UITextView) {
switch texView.tag {
case 1:
//Handle Text View with tag 1
return
case 2:
//Handle Text View with tag 1
return
default:
return
}
2。使用您定义的textView对象
func textViewDidBeginEditing(_ textView: UITextView) {
if textView == termTextView {
//Do sth to termTextView
} else if textView == definitionTextView {
//Do sth to definitionTextView
}
}
如果您需要使用多个委托方法,只需使用:
func textViewDidBeginEditing(_ definitionTextView: UITextView)
代替:
private func textViewDidBeginEditing2(_ definitionTextView: UITextView)
希望对您有帮助。