Ios 模拟等待时关闭键盘
此函数用于在用户成功登录时模拟等待。正如您所看到的,我首先关闭键盘,但这并不能阻止NSThread在关闭键盘之前休眠。我想我需要利用调度队列的能力,但不是很确定。我能在睡觉前关掉键盘吗Ios 模拟等待时关闭键盘,ios,objective-c,nsthread,resignfirstresponder,Ios,Objective C,Nsthread,Resignfirstresponder,此函数用于在用户成功登录时模拟等待。正如您所看到的,我首先关闭键盘,但这并不能阻止NSThread在关闭键盘之前休眠。我想我需要利用调度队列的能力,但不是很确定。我能在睡觉前关掉键盘吗 -(IBAction)userLoginButtonPressed:(id)sender { /* resign first responders so that the user can see the label of the server trying to log in */ [
-(IBAction)userLoginButtonPressed:(id)sender
{
/* resign first responders so that the user
can see the label of the server trying to log in */
[self.usernameField resignFirstResponder];
[self.passwordField resignFirstResponder];
self.statusLabel.text = @"Logging In...";
// create the server object and pass in the username and password values
IONServer *server = [[IONServer alloc] init];
NSString *user = self.usernameField.text;
NSString *pw = self.passwordField.text;
[server loggingInWithUserName:user password:pw];
// redirect based on result
if (server.result.success) {
[self serverSuccess];
[NSThread sleepForTimeInterval:2.0f];
} else {
[self serverFailure];
}
// store the server object as this class' server var
self.server = server;
NSLog(@"Result From Server: %@", server.result);
}
取消键盘是动画的,这足以让我们知道它是在主线程上异步发生的。换句话说,代码块启动,将键盘添加到主线程runloop中,线程休眠2秒钟,因为你这么说(如果你要求我做的话,这是一件可怕的事情),然后轮到键盘设置动画并被解除 一个好把戏可以是
[UIView animateWithDuration:0 animations: ^{
[self.usernameField resignFirstResponder];
[self.passwordField resignFirstResponder];
} completion: ^(BOOL finished) {
// Do whatever needed...
[NSThread sleepForTimeInterval:2.0f];
}];
但是-我强烈建议找到比冻结主线程更好的解决方案
另外-没有您要求的内容,但是,假设您的所有文本字段都是
self.view
的子视图,您可以调用[self.view endEditing:YES]代码>并且您不需要关心哪个文本字段对应于响应者。我会接受答案(添加提示),但您可能希望将块更新为[UIView animateWithDuration:0 animations:^{[self.view endEditing:YES];}完成:^(BOOL finished){[NSThread sleepForTimeInterval:2.0f];}];谢谢。我编辑了我的答案,我从脑海中写出了代码,并假设了一些打字错误。。。