1

我在模态 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];
}
4

2 回答 2

3

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

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

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

于 2011-11-29T07:44:23.860 回答
1

如果一个小的延迟会起作用,您可以在您的验证和您的 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];
}

如果我正确理解了您的问题,那应该可以解决。

于 2011-11-29T06:57:20.707 回答