2010-07-18 8 views
2

사용자가 UITextField을 2 초 동안 입력하지 않았는지 알 수있는 방법이 있는지 궁금합니다.사용자가 시간 간격으로 타이핑을 마쳤을 때를 알려주는 방법은 무엇입니까?

을 제공 할 수없는 경우 나 사용자가 텍스트 필드에 오류 입력 한 경우 알 수있는 방법이 있는지 알고 싶습니다 - 예 :

NSArray에서 객체를 포함하는 UITextView있다가 사용자는 텍스트 필드에 내용을 입력하고 내용을 텍스트보기와 일치시켜야합니다. 그들이 실수하면, 내가 말할 필요가있는 것 (도움이 필요한 것)을 알려줍니다. -주의 : 사용자가 문자열을 올바르게 타이핑하면 자동으로 그것을 받아 들여 다음 문자열로 넘어갑니다. 문자열을 제출할 버튼이 없습니다. 텍스트 필드를 통해 수행합니다.

답변

1

이것은 가능하지만 일부 작업이 포함될 예정입니다. NSTimer 및 NSDate 클래스와 UITextFieldDelegate 프로토콜을 확인해야합니다. 기본적으로 사용자가 텍스트 필드에 무엇인가를 입력 할 때마다 호출 할 대리자 메소드가 생깁니다. 그런 다음이 메서드는 현재 시간을 캐시하고 ([NSDate date]를 통해) 타이머를 2 초 동안 시작합니다. 타이머가 실행되면 캐시 된 NSDate를 검사하여 텍스트 필드의 마지막 입력이 마지막 2 초 내에 있었는지 확인하는 메서드를 트리거합니다.

+0

감사합니다. 이 일을 성취 할 수있는 다른 방법을 알고 있습니까? (사용자가 잘못 입력했는지 확인하십시오) – Alex

+0

타이머 경로를 원한다면 Jeff Kelley의 답변으로 일부 작업을 저장할 수 있습니다. 잘못 입력했는지 알리는 데는 대리자 방법으로 입력하는 내용과 정답을 비교할 수 있습니다. 전반적인 상황을 살펴보면서 텍스트 필드 대리인을 이해하고 시작하는 것이 좋습니다. 가능한 모든 솔루션이이를 포함 할 것이기 때문입니다. –

0

UITextFileUITextView에 대한 대리인 방법을 확인하십시오. 사용자가 필드의 상태를 변경할 때 호출 할 수있는 여러 가지 방법을 구현할 수 있습니다. 또한 특정 간격 동안 무언가가 필요한 경우 NSTimer을 발사 할 수 있습니다.

2

텍스트 변경을 처리하는 곳이면 어디서나 NSTimer을 시작할 수 있습니다. 타이머가 시작되기 전에 더 많은 텍스트가 입력되면 취소하려면 -invalidate을 호출 할 수 있지만 타이머가 작동하면 입력 된 텍스트가 없음을 알 수 있습니다.

0

텍스트 필드에 텍스트 변경 이벤트를 등록하십시오. 변경이 발생하면 타이머 구성원을 만들거나 업데이트하십시오. 타이머가 작동하면 시간이 경과 한 것입니다. 청소할 때 타이머를 무효화하십시오.

-(void) textFieldChanged:(id)sender { // UIControlEventEditingChanged 
    NSTimeInterval tooLong = 2.0; 

    if (myTimer) [myTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:tooLong]]; 
    else myTimer = [[NSTimer scheduledTimerWithTimeInterval:tooLong ... repeats:NO] retain]; 
} 
관련 문제