2013-10-07 3 views
1

У меня есть экран с навигационным контроллером и текстовым полем. когда я двигаюсь дальше и возвращаюсь, я хочу, чтобы клавиатура была скрыта на первом экране. Я скрываю клавиатуру, как на событии текстового поля.Скрыть клавиатуру на ViewWillAppear

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return NO; 
} 

Но как сделать это с точки зрения событий, связанных с тем, что всякий раз, когда моя точка зрения появляется клавиатура скрыта .. Pls руководство/Помощь. спасибо в adv.

ответ

1

Добавьте этот код на свой ViewWillAppear:

for(id obj in self.view.subviews) 
    { 
     if([obj isKindOfClass:[UITextField class]]) 
     { 
      [obj resignFirstResponder]; 
     } 
    } 

Это бы во всех текстовых полях в этом конкретной точке зрения здесь весь вид и добавить код, написанные ранее для удаления клавиатуры.

+0

ironmangill..no удачи .its итерации только для вида прокрутки. –

3

Я думаю, что это также хороший способ удалить клавиатуру с помощью iOS App, если ваш UITextView или UITextField не подключен через IBOutlet.

Если вы хотите, чтобы скрыть клавиатуру с UIViewController события жизненного цикла, как с viewWillAppear или т.д. Следуйте за этим

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [[self view] endEditing:YES]; 
} 

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

[yourTextField resignFirstResponder]; 
+0

bit-whacker .. У меня есть 4 текстовых поля и пробовал для всех вроде [TF1 resignFirstResponder] .. все еще не работает. –

+0

Да. он будет работать, если какое-либо поле находится в режиме редактирования. – Buntylm

+0

Используйте метод метода viewWillAppear, как упоминается бит-ударник, он будет работать для вас. – Anuj

0

Хорошая привычка писать этот код в вашем экране -viewWillDisappear. Таким образом, при переходе с одного экрана на другой в это время он удалит клавиатуру с этого экрана.

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.view endEditing:YES]; 
    [super viewWillDisappear:animated]; 
} 

Для нескольких TextFields, то лучше использовать -endEditing для этой конкретной точки зрения, а не -resignFirstResponder для какой-либо одной TextField. Взгляните на мой Answer.

+0

не повезло. Я также добавляю [[NSNotificationCenter defaultCenter] removeObserver: self имя: UIKeyboardWillShowNotification объект: nil]; внутри viewWillDisappear проблема татов –

+0

@Lalit_vicky: Сделайте одно. Напишите вышеприведенный код в '-viewDidDisappear:' вместо '-viewWillDisappear'. – Bhavin

+0

Vin .. я добавил, но все же клавиатура видна. –

-1

То, что вы делаете неправильно, когда вы перемещаете предыдущий контроллер на текущий контроллер, клавиатура вставлена ​​из-за выбранного текстового поля предыдущего контроллера.

И в текущем контроллере код:

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [[self view] endEditing:YES]; 
} 

Он не будет работать как ни один TextField не выбран в этом контроллере. Итак, что вам нужно сделать, это написать тот же код в предыдущем методе viewWillDisappear, который, несомненно, решит вашу проблему.

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.view endEditing:YES]; 
    [super viewWillDisappear:animated]; 
} 
+0

Anuj .. у меня есть screen1 n screen2..m, перемещение назад с экрана2 на screen1. Вы хотели добавить в screen2 ..? Я попробовал это, но все же выдал выходы .. –

+0

вы можете поделиться своим кодом обоих контроллеров – Anuj

0
//This is for Swift 
override func viewWillAppear(animated: Bool) 
{ 
    self.view.endEditing(true) 
} 
+3

Не хватает вызова 'super.viewWillAppear'. –

+0

Я думаю, вам не нужно звонить super.viewWillAppear – Iya

+0

Вам всегда нужно делать «супер» звонки, или вы рискуете испортить поток общего приложения. См. Doc: https://developer.apple.com/library/ios/ документация/UIKit/Справка/UIViewController_Class/index.html # // apple_ref/ОКК/instm/UIViewController/viewWillAppear: – alasker

Смежные вопросы