내 앱에 로그인 할 때 핀 화면을 사용하고 있습니다. 핀 화면은 4 개의 레이블과 숨겨진 텍스트 필드로 구성됩니다. 사용자가 키패드를 통해 텍스트를 입력하면 레이블로 심볼을 업데이트합니다. 로그인이 시작되기 전에 마지막 레이블이 실제로 업데이트되지 않고 로그인 프로세스가 완료되는 동안 빈 상태로 유지된다는 점을 제외하고는 정상적으로 작동합니다. 레이블이 ios에서 업데이트 된 후 작업 수행
이
코드 관련 비트입니다 ://an observer has been added elsewhere
- (void)textDidChange:(NSNotification *)notification
{
UITextField *field = [notification object];
if (field == inputField)
{
NSString *newText = field.text;
if ([newText length] <= pinLength) [self updatePINDisplay];
}
}
-(void)updatePINDisplay
{
if ([pinText length] > pinLength) return;
for (NSInteger ii = 0; ii < [pinText length]; ii++)
{
UILabel *label = [pinFields objectAtIndex:ii];
[label setText:@"x"];
}
for (NSInteger ii = [pinText length]; ii < pinLength; ii++)
{
UILabel *label = [pinFields objectAtIndex:ii];
[label setText:[NSString string]];
}
if ([pinText length] == pinLength) [self login];
}
[자동 로그인]을 레이블이 업데이트됩니다 마지막 핀 전에 일이 다른 프로세스를 시작하기 때문에 문제가 발생합니다, 그래서 마지막 상자가있는 동안 로그인이 발생합니다 빈.
나는
[self performSelector:@selector(login) withObject:nil afterDelay:0.1]
와
[self login]
를 대체하여 문제를 해결 일한하지만 난 임의의 시간 지연을 좋아하지 않는다. 레이블이 그려진 후 로그인 코드를 시작하는 데 사용할 수있는 대리자 방법이 있었으면합니다. 뭔가 같은 :
-(void)labelDidGetDrawn
다른 (비 해킹) 솔루션
덕분에 오신 것을 환영합니다 :-)에게도!