2011-04-12 33 views
4

我有两个用于用户名和密码的文本框和一个提交按钮。当按下提交按钮时,执行检查以查看是否输入了用户名和密码。如果没有,则显示警告消息,并且未输入值的字段成为第一响应者。becomeFirstResponder减速应用程序

-(IBAction)loginPressed:(id)sender { 


    if ([username.text length] == 0) 
    { 
     [self showAlert:@"Invalid Username/ Password"]; 
     [username becomeFirstResponder]; 
     return; 
    } 

    if ([password.text length] == 0) 
    { 
     [self showAlert:@"Invalid Username/ Password"]; 
     [password becomeFirstResponder]; 
     return; 
    } 
} 

我观察到,点击按钮后,按钮保持选定状态约1.5秒,然后显示警报。如果我注释掉becomeFirstResponder方法,它可以毫无停顿地工作。不过,我需要becomeFirstResponder在那里。我如何使用它来加快速度?

+1

可能很愚蠢的问题:如果您切换becomeFirstResponder和showAlert的顺序会发生什么? – 2011-04-12 06:22:29

+0

嘿,解决了它。现在很好地工作。谢谢。发布它作为答案。 – 2011-04-12 06:45:26

回答

5

切换becomeFirstResponder和showAlert的顺序。

+1

我有同样的问题没有警报:(。大量延迟(几秒!)来调用becomeFirstResponder。 – Adam 2011-10-19 12:21:18

+0

我也有同样的问题,没有警报 - 只是取消隐藏视图/文本框,然后调用becomeFirstResponder。想法? – 2012-09-13 18:00:38

0

[self showAlert:@“Invalid Username/Password”];将需要一段时间。你不能说出那件事。

+0

但是根据OP,如果将becomeFirstResponder删除,则不会有任何延迟,所以显然,showAlert在这里不是问题。 – 2011-04-12 06:21:43