2011-12-19 17 views
1

我有一個屏幕有幾個UITextField s和UITextView s。UITextView textViewShouldEndEditing/textViewDidEndEditing不叫

儘管結束編輯UITextField的「官方」方法是觸摸鍵盤上的完成鍵,而UITextView的「官方」方法是觸摸外部完成按鈕 - 並且我同時支持 - 我無法通過簡單地觸摸其他控件來阻止用戶切換到其他文本字段或文本視圖。

如果正在編輯的當前控件是UITextField,則此功能正常工作。當用戶觸摸第二個控件時,將爲當前文本字段調用TextFieldDidEndEditing:,並且我可以處理該字段中的數據。

但是,如果當前控件是UITextView,那麼當用戶觸摸另一個控件時,既不調用textViewShouldEndEditing也不調用textViewDidEndEditing。導致它們被調用的唯一方法是在觸摸第二個控件時執行明確的ResignFirstResponder,但這會導致鍵盤被解除,因此新的觸摸將被有效忽略(用戶必須再次觸摸新的字段以恢復編輯)。

有沒有辦法導致UITextView的行爲像UITextField當另一個控件被觸摸?

+0

適合我。你確定你設置了textView的委託嗎?好的,如果它在您手動使用resignFirstResponder時可能有效。 – 2011-12-20 00:13:12

+0

是的,當然... :) – 2011-12-25 14:36:24

回答

0

在textViewShouldEndEditing和textViewDidEndEditing方法中放置了一個if-else子句。

- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 
    if (textView = (your text view property) 
    { 
     //do something 
    } 
}