Проблема с отображением/скрытием клавиатуры в iPhone 5c

За последние несколько дней я столкнулся со странной проблемой keyboard, которая возникает только в iPhone 5c.

Я использую objective-C для разработки в Xcode-6.4

Моя цель среды — ios7.

Вот как я справляюсь с keyboard Notification.

 - (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear:animated];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

}

Для Deregister Notification я пишу этот фрагмент кода. Чтобы быть уверенным, я использую -resignFirstResponder для каждого текстового поля.

- (void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

[self hideKeyBoard];
[self.view endEditing:YES];

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}


- (void)hideKeyBoard{

[kAgeTextField resignFirstResponder];
[kSchoolTextField resignFirstResponder];
}

И в кнопке отправки я проверил какое-то условие, а затем показываю AlertView.

- (IBAction)submitClicked:(id)sender
{
if(validated)
 {    
    [self.view endEditing:YES];
    [self hideKeyBoard];
    [self.view resignFirstResponder]; 

    [self makeApiCall];
 }
}

Теперь, когда я получаю ответ Success/Failure от сервера, я делаю это. Это блок, который запускается после получения ответа от сервера:

-(void)SuccessfulWithServerInfo:(id)responseInfo
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
dispatch_async(dispatch_get_main_queue(),^{
    [appDelegate hideProgressViewFromView:self.view];
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"Thanks for coming" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
    [self.navigationController popToRootViewControllerAnimated:YES];


});

}

Проблема, когда я получаю alertBox и нажимаю "ОК". Затем клавиатура открывается и закрывается автоматически. Это происходит только с iPhone 5C. Проверял на 4s,5s,6 и 6Plus. Все работают нормально.

Если кто-нибудь знает об этом, пожалуйста, помогите.


person Dalvik    schedule 02.12.2015    source источник


Ответы (2)


Вы показываете предупреждение одновременно с popToRootViewController. Может быть, это вызовет проблемы.

  1. Показать оповещение.
  2. Обработка метода просмотра предупреждений.
  3. Напишите [self.navigationController popToRootViewControllerAnimated:YES] в методе представления предупреждений.

    [UIAlertView showWithTitle:@"" message:@"Thanks for coming" cancelButtonTitle:@"OK" otherButtonTitles:nil] alertViewStyle:UIAlertViewStyleDefault tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex, NSString *text)
     {
         if(buttonIndex == 1)
         {
             [self.navigationController popToRootViewControllerAnimated:YES]; 
         }
    }];
    

Надеюсь, что это поможет вам.

person Ekta Padaliya    schedule 02.12.2015
comment
без изменений,,,Мои все текстовые поля находятся в табличном представлении...будет ли проблема со скоростью просмотра таблицы - person Dalvik; 02.12.2015
comment
Это табличное представление находится на том же контроллере представления, где отображается оповещение? - person Ekta Padaliya; 02.12.2015

После некоторых исследований я нашел этот ответ в stackOverflow.

Это некоторые изменения в поведении AlertView в ios7 и ios8.

Я использую этот код для решения моей проблемы:

[self performSelector:@selector(showAlertView) withObject:nil afterDelay:0.6];

Подробный ответ см. в этот ТАК ответ

person Dalvik    schedule 03.12.2015