2011-10-20 6 views
0

iPhone 앱에서 양식 유효성 검사를하고 있습니다. 내 단추 submit에 didEndEditing 메서드를 호출하고 싶습니다. 어떻게해야합니까? 여기didEndEditing을 어떻게 호출합니까?

내 코드

이 방법 여기

-(void)didEndEditing:(UITextField*)textField; 
{ 
    // Do Something! 
} 

내가 메소드를 호출하고있어입니다

-(IBAction)btnSelected:(id)sender { 
    UIBarButtonItem *bbi = (UIBarButtonItem *) sender; 

    if (bbi.tag == 1) { 

     [self didEndEditing]; // How do I call this method? 
    } 
} 

누군가가 나를 도울 수 있습니까?

+0

인자없이 'didEndEditing'을 호출했는데, 인식 할 수없는 선택기 예외가 발생하지 않는다는 것에 놀랐습니다. 그러나 아래에서 내가 대답했듯이이 방법을 너 자신이라고 부르면 안된다. –

+0

네, 잘 작동합니다! – HardCode

답변

2

귀하의 추천 내용은 textViewDidEndEditing:입니까? 텍스트 필드가 더 이상 첫 번째 응답자가 아닌 경우이 메서드를 직접 호출하면 안됩니다. API 문서에서 :

이 방법의 구현은 선택 사항입니다. 텍스트 뷰는 보류중인 편집을 닫고 첫 번째 응답자 상태를 종료 한 후에이 메시지를 해당 대리자에게 보냅니다. 이 메소드를 사용하여 데이터 구조를 분해하거나 편집을 시작할 때 설정 한 상태 정보를 변경할 수 있습니다.

유효성을 검사하려면 유효성 검사 코드를 리팩터링하고 textViewDidEndEditing:에서 호출하고 제출하는 것이 좋습니다.

할 수 있습니다이 같은 모든 텍스트 필드 통해 루프 :

for (UITextField *textField in [NSArray arrayWithObjects 
           self.textField1, 
           self.textField2, 
           nil]) { 
    // validate textField 
} 

당신이 검증 블록, 각 필드에 대한 정규식 등을 포함하는보다 복잡한 데이터 구조를 만들 수있는 필드마다 다른 검증이 필요한 경우

.

+0

글쎄, 난 textViewDidEndEditting 내 양식 유효성 검사를하고 있어요. 사용자가 textField를 클릭하는 경우에만 작동합니다. 사용자가 textField를 클릭하지 않고 제출을 클릭하면 어떻게됩니까? 제출시 필요한 모든 필드의 유효성을 검사하고 싶습니다. – HardCode

+0

확인. 제출하는 것과 동일한 방법으로 유효성 검사를 수행하면 작동 할 수 있습니까? 또는 리팩터링을 통해 검증 코드는'textViewDidEndEditing'과 submit 메소드 모두에서 호출됩니다. –

+0

잘 textViewDidEndEditing 메서드는 사용자를 그 자리에서 확인하는 데 유용합니다. 또한 제출 한 사용자의 유효성을 검사하고 싶지만 제출할 때 동시에 모든 필드의 유효성을 검사하고 싶습니다! – HardCode

0

당신은 활성 텍스트 필드로 바로 resignFirstResponder해야 :

-(IBAction)btnSelected:(id)sender { 
    UIBarButtonItem *bbi = (UIBarButtonItem *) sender; 

    if (bbi.tag == 1) { 

     [self.myActiveTextField resignFirstResponder]; 
    } 
} 

그런 다음 didEndEditing 자체에 호출되는 것이다.

+0

죄송합니다! – HardCode

+0

'resignFirstResponder'가'textViewDidEndEditing :'에 대한 호출을 직접 트리거하고 메인 UI 루프를 리턴 한 후에는 작동하지 않을 수 있습니다. –

+0

그럼 [self.txtAddress resignFirstResponder]를 호출했습니다. 이 내 제출 및 모든 textField 메서드에 들어간 적이! – HardCode

관련 문제