点击UITextView时的事件(即UITextView失去焦点)

时间:2016-05-18 01:49:19

标签: ios swift uitextview

一旦用户完成编辑并点击屏幕上的其他位置,我想在我的UITextView上执行一些处理。什么是最佳做法?

我几乎设法用func textViewDidEndEditing(textView: UITextView)获得了预期的效果,但这仅在用户点击键盘上的“Enter”键时才会运行(人们很少这样做 - 他们只是通过点击其他地方来提交更改在屏幕上。)

func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)的问题在于它不关心是否编辑了UITextView。

1 个答案:

答案 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
    }
}