我想模仿iphone解锁密码对话框。我创建了四个标签,在用户输入第四个数字后,我检查了正确性。如果正确,我将关闭对话框。如果不正确,我将清除输入框并让用户重试。按下按钮时,我会调用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];
}
但是我遇到了一个问题:第四个特征从来没有机会展示过。无论是否正确,在点击最后一个按钮后立即关闭/清除对话框。
我不知道如何解决这个问题。我甚至尝试使用在完成块中调用的checkPwd更新UIView Animation中的标签,但没有运气。
请给我一些建议如何解决这个问题。在清除标签之前,苹果的对话框暂停约0.5秒。
由于
利奥
答案 0 :(得分:1)
难道你不能只使用NSTimer或延迟后运行的选择器吗?如果pwBtnUp是用户点击数字时调用的函数,只需检查它是否为第4个数字,然后在隐藏或清除字段的某个延迟后执行函数。
答案 1 :(得分:1)
而不是使用NSTimer
只是插入延迟:
[self performSelector:@selector(checkPwd) withObject:nil afterDelay:0.5];
顺便说一句,你的代码似乎有点多余。每次按下新按钮时,为什么要更新所有文本字段/标签?如果字段已包含字符,则无需这样做。但也许这不是重点。