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

如果我正确理解您的问题应该有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top