2011-12-19 2 views
1

UITextFieldUITextView이있는 화면이 있습니다.UITextView textViewShouldEndEditing/textViewDidEndEditing이 호출되지 않았습니다.

UITextField의 편집을 끝내는 공식 방법은 키보드의 완료 키를 터치하는 것이며, UITextView의 "공식"방법은 외부 완료 버튼을 터치하는 것입니다. 둘 다 지원합니다. 사용자가 단순히 다른 컨트롤을 터치하여 다른 텍스트 필드 또는 텍스트보기로 전환하는 것을 막을 수는 없습니다.

편집중인 현재 컨트롤이 UITextField이면 올바르게 작동합니다. 사용자가 두 번째 컨트롤을 터치하면 현재 텍스트 필드에 TextFieldDidEndEditing:이 호출되고 해당 필드의 데이터를 처리 할 수 ​​있습니다.

그러나 현재 컨트롤이 UITextView 인 경우 사용자가 다른 컨트롤을 터치하면 textViewShouldEndEditingtextViewDidEndEditing도 호출되지 않습니다. 두 번째 컨트롤을 터치 할 때 명시 적으로 ResignFirstResponder을 호출하는 것이 유일한 방법이지만 키보드가 닫히면 새 터치가 실제로 무시됩니다 (사용자가 새 필드를 다시 터치하여 다시 시작해야 함). 편집).

UITextViewUITextField과 같이 작동하도록 할 수 있습니까? 다른 컨트롤을 터치 할 때?

+0

이 맞습니다. textView의 델리게이트를 설정 하시겠습니까? 좋아요, 당신이 수동으로 resignFirstResponder를 사용할 때 작동 할 수 있습니다. –

+0

예, 물론 ... :) –

답변

0

의 textViewShouldEndEditing 및 textViewDidEndEditing 메서드는 if-else 절을 ​​넣습니다.

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