加快键盘关闭速度或等待键盘关闭



我在模态UINavController中有一个保存按钮的问题。当我按下保存按钮时,如果键盘仍然打开,我就会忽略键盘,验证文本字段中的数据,然后在我发送信息时显示UIProgressView。

我的问题是,键盘没有得到的方式足够快,所以键盘仍然是在显示UIProgressView的时候,它被添加到我的视图的底部,它看起来很愚蠢。

我可以按回车键,键盘掉下来,然后按保存,没有问题。但如果用户跳过键盘返回键,直接点击右上角的保存按钮,我就有问题了。

理想情况下,我想实现一个简短的等待语句,让它从视线中消失。或者在延迟后执行验证,但我所尝试的一切都不起作用。请帮助。

代码示例:

// end edit mode - should kill all keyboards
[[self.tableView superview] endEditing:YES]; 
// make sure everything is entered correctly and validates
[self validateEntryFields]; // keyboard not gone when this finishes
if (valid) { // progress view shows up towards bottom of view
    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUD];
    HUD.delegate = self;
    HUD.labelText = @"Adding User";
    HUD.detailsLabelText = @"Please Wait";
    [HUD showWhileExecuting:@selector(sendNewUserInformation) onTarget:self withObject:nil animated:YES];
}

您可以使用键盘通知(这将是比基于计时器更正确的解决方案):

[notificationCenter addObserver: self selector: @selector(keyboardDidHide:) name: UIKeyboardDidHideNotification object: nil];

并在keyboardDidHide:方法中显示您的进度视图

如果一个小的延迟会工作,你可以尝试以下代码之间的验证和你的If语句,你决定是否会显示进度视图。

你可以使用NSTimer对象:

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(mumboJumbo:)userInfo:nil repeats:NO];

并将代码添加到如下方法中:

-(void)mumboJumbo:(id)sender{
    HUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUD];
    HUD.delegate = self;
    HUD.labelText = @"Adding User";
    HUD.detailsLabelText = @"Please Wait";
    [HUD showWhileExecuting:@selector(sendNewUserInformation) onTarget:self withObject:nil animated:YES];
}

如果我理解正确的话,你的问题应该可以解决。

最新更新