2011-09-20 6 views
1

난 당신이 더 생각 하나 내 경우를 위해, SO 여기에 기존 사례를 확인아이폰 : UITextField에 검증

이 하나 개의보기 많은 텍스트 필드는 사용자가 편집 그냥 때 나는 그들을 유효성을 검사 할 그 특정 텍스트 필드, 그렇지 않으면 나는 사용자가 화면의 다음을 누를 때 나는 내가 그다지 신경 쓸 필요가없는 모든 유효성 검증 메시지를 보여줄 때 함께 검증해야한다. 두 가지 방법으로 텍스트 필드의 유효성을 검사하고 싶습니다. 숫자 입력에서 정의 된 범위에서 유효성을 검사하려는 경우 (예 : 5와 1000 사이의 숫자 또는 텍스트의 길이가 정의 된 범위 내에있는 경우) 예 : 2 ~ 10 자. 그리고 사용자는 범위를 벗어난 입력을 입력 할 수 있어야합니다.

어느 쪽이 더 낫습니다. 내가 입력 한 번호가 범위 내에 런타임에 확인하고 사용자가 크거나 작은 입력 할 수 있도록 해달라고 할 수있는 방법

[textField addTarget:self action:@selector(validateField:) forControlEvents:UIControlEventEditingChanged]; 

그리고 경우 중 하나 shouldChangeCharactersInRange

이나 뭐 이런 : TextField를 사용

숫자

답변

0

좋습니다.

귀하의 질문에 대한 답변은 입니다. 1) 모든 텍스트 필드에 태그 값을 설정하십시오. 2) UIControlEventEditingDidBegin을 사용하고 현재 필드 앞에있는 텍스트 필드의 유효성을 검사하는 방법을 트리거하십시오.

[textfield1 setTag:1]; 
    [textfield2 setTag:2];// make sure to set tag values incrementally 
    [textfield2 addTarget:self @selector(validate:) forControlEvents:UIControlEventEditingDidBegin]; 
-(void) validate:(id) sender 
{ 
    // 10 is the number of textfields, change it accordingly. 

    if(sender.tag!=1 && sender.tag!=10) 
    { 

      //validate textfield with tag sender.tag-1 
    } 
    else 
    { 
     //handle first and last textfield here 
    } 
} 

시도해보십시오. 그러면 문제가 해결 될 것입니다.

0

실제로 두 가지 방법 모두 잘 될 것입니다. UITextFielddelegate을 사용하여 textField:shouldChangeCharactersInRange을 호출하고 대상 & 액션을 사용하는 것과 같은 좋은 방법이 있습니다. 두 상황 모두에서 UITextField 호출을 수신하는 핸들러를 정의합니다 (이 중 하나의 구현은 @Anil Kumar가 텍스트 필드에 태그를 지정하는 답변에서 제안한 것이지만 실제로는 필요하지 않습니다. isEqual:을 호출하면됩니다. 텍스트 필드는 직접 동등성을 검사합니다).

개인적으로 저는 이러한 종류의 작업에 위임을 사용하는 경향이 있습니다.

업데이트 :이 문제에 대해 정말로 궁금한 점이 있다면 Reactive Cocoa을 사용합니다. Ray Wenderlich Gang의 April Tech Talk에는 멋진 세션이 있었으며 유효성 검사의 문제에 대해서도 논의되었으므로 귀하의 사례와 일치합니다! :)