我正在使用針屏來登錄到我的應用程序。引腳屏幕由四個標籤和一個隱藏文本字段組成。當用戶通過鍵盤輸入文字時,我用符號更新標籤。這工作正常,除了最後一個標籤在登錄開始之前並沒有實際得到更新,並且在登錄過程完成時仍然是空的。在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 login]
與
[self performSelector:@selector(login) withObject:nil afterDelay:0.1]
,但我不喜歡的任意時間延遲。我希望可以在繪製標籤後使用委託方法啓動我的登錄代碼。喜歡的東西:
-(void)labelDidGetDrawn
任何其他(非破解版)解決方案也歡迎:-)
謝謝!