Ускорьте работу клавиатуры или подождите, пока она не будет выполнена - PullRequest
1 голос
/ 29 ноября 2011

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

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

Вы можете использовать уведомление с клавиатуры (это было бы более правильным решением, чем по таймеру):

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

И покажите свой прогресс в методе keyboardDidHide:.

1 голос
/ 29 ноября 2011

Если сработает небольшая задержка, вы можете попробовать следующий код между вашей проверкой и вашей инструкцией 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];
}

Если я правильно понял вашу проблему, она должна работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...