Ускорить увольнение клавиатуры или подождите, пока это не сделано

StackOverflow https://stackoverflow.com/questions/8306823

Вопрос

У меня проблема с моей кнопкой сохранения в модальном 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