아이폰의 암호를 뽑을 수있는 대화 상자를 모방하고 싶습니다. 나는 네 개의 레이블을 만들었고 사용자가 네 번째 숫자를 입력 한 후에 그 정확성을 검사합니다. 맞으면 대화 상자를 닫습니다. 올바르지 않으면 입력 상자를 지우고 사용자가 다시 시도하도록합니다. 버튼을 누를 때 updateText
으로 전화합니다.재설정하기 전에 비밀번호 라벨을 업데이트하는 방법은 무엇입니까?
- (void) updateText{
pw1.text = [self.enteredPwd objectAtIndex:0];
pw2.text = [self.enteredPwd objectAtIndex:1];
pw3.text = [self.enteredPwd objectAtIndex:2];
pw4.text = [self.enteredPwd objectAtIndex:3];
if (currentIndex > 3) {
// check pwd
[self checkPwd];
}
}
- (IBAction)pwBtnUp:(id)sender {
UIButton *btn = (UIButton*)sender;
[self.enteredPwd insertObject:[NSString stringWithFormat:@"%d", btn.tag] atIndex:currentIndex++];
[self updateText];
}
하지만 문제가 하나 있습니다. 네 번째 캐릭터는 표시 할 기회가 없습니다. 정답이든 아니든, 마지막 버튼을 두드린 직후 대화 상자는 사라지거나 지워집니다.
나는 이것을 고치는 방법을 모른다. 나는 심지어 UIView Animation의 레이블을 checkPwd와 함께 완료 블록에서 호출하려고 시도했지만 행운은 없습니다.
이 문제를 해결하는 방법을 알려주세요. 사과의 대화 상자에는 라벨을 지우기 전에 약 0.5 초 가량 멈 춥니 다.
감사
레오
이 코드를 시도했지만 "인식 할 수없는 selector checkPwd"로 인해 충돌합니다. 나는 그것을 잘못 사용하고 있는가? 'NSTimer * checkPwdTimer = [NSTimer timerWithTimeInterval : .5 target : 셀렉터 : @selector (checkPwd :) userInfo : nil repeats : NO]; NSRunLoop * myRunLoop = [NSRunLoop currentRunLoop]; [myRunLoop addTimer : checkPwdTimer forMode : NSDefaultRunLoopMode];'암호 확인을위한'- (void) checkPwd'가 있습니다. – leo
OK. @selector (checkPwd :)를 @selector (checkPwd)로 변경 한 후에 작동합니다. 나는 그 차이점을 모른다. 사과 설명서에는 메소드 이름 뒤에 콜론이 있습니다. – leo
checkPwd 다음에 매개 변수가있는 경우 (호출자 (id) 보낸 사람과 함께 IBAction을 사용하는 경우) 호출 할 선택기에 매개 변수가 있음을 나타내는 콜론이 필요합니다. – LuckyLuke