一旦用户完成编辑并点击屏幕上的其他位置,我想在我的UITextView上执行一些处理。什么是最佳做法?
我几乎设法用func textViewDidEndEditing(textView: UITextView)
获得了预期的效果,但这仅在用户点击键盘上的“Enter”键时才会运行(人们很少这样做 - 他们只是通过点击其他地方来提交更改在屏幕上。)
func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
的问题在于它不关心是否编辑了UITextView。
答案 0 :(得分:2)
我认为您可以在包含textView的视图上添加UITapGestureRecognizer。在UITapGestureRecognizer的选择器中,您可以添加逻辑代码来处理该过程。您可以检查textView文本的长度,以确定是否编辑了UITextView。以下是一些示例代码:
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
view.addGestureRecognizer(tapGestureRecognizer)
}
func handleTap() {
let text = textView.text
textView.resignFirstResponder() // loosing focus
if text.characters.count > 0 {
// textView edited
} else {
// textView not edited
}
}