Ускорить увольнение клавиатуры или подождите, пока это не сделано
-
25-10-2019 - |
Вопрос
У меня проблема с моей кнопкой сохранения в модальном 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];
}
Если я правильно понял вашу проблему, которая должна работать.