2016-05-18 88 views
0

我想在用戶完成編輯並在屏幕上的其他地方點擊之後,對我的UITextView執行一些處理。最佳做法是什麼?觸發UITextView(即失去焦點的UITextView)的事件

我幾乎可以通過func textViewDidEndEditing(textView: UITextView)獲得想要的效果,但是隻有當用戶在鍵盤上輕敲'Enter'鍵時纔會運行(人們很少這麼做 - 他們只是通過點擊屏幕上的其他位置)

func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)的問題在於它不關心UITextView是否被編輯過。

回答

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 
    } 
} 
+0

謝謝! textView.resignFirstResponder()的目的是什麼?有沒有更強大的方法來檢查textView是否已被編輯? – Daniel

+0

textView.resignFirstResponder()的目的是爲了讓textView釋放遊標焦點在視圖上,並在需要時隱藏鍵盤。我不知道其他方式來檢查textView編輯或不。 – EricXuan