IPad отменить клавиатуру, не зная, какое текстовое поле открыло ее

Есть ли способ сделать общий resignFirstResponder, чтобы скрыть клавиатуру, независимо от того, что ее называет textfield/view/etc?

Причина в том, что у меня много текстовых полей на моем представлении и не хочу иметь resignFirstResponder для всех текстовых полей, чтобы скрыть клавиатуру. Просто хочу общий

[self resignFirstResponder].

Любые идеи?

Заранее спасибо

Ответ 1

Самый простой способ сделать это - иметь метод для всякий раз, когда вы хотите отклонить клавиатуру, которая выглядит так:

-(void)dismissKeyboard {
    [firstField becomeFirstResponder];
    [firstField resignFirstResponder];
}

Ответ 2

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

- (BOOL)endEditing:(BOOL)force

Этот метод просматривает текущее представление и его иерархию подкастов для текстового поля, которое в настоящее время является первым ответчиком. Если он найдет один, он попросит, чтобы текстовое поле ушло в отставку в качестве первого ответчика. Если параметр force установлен в YES, текстовое поле никогда не запрашивается; он вынужден уйти в отставку. Документация UIView

[self.view endEditing:YES];

он будет скрывать клавиатуру, когда мы нажимаем на нее.

Ответ 3

Вы можете отключить клавиатуру без ссылки на UITextfield/UITextView с помощью кода ниже:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

это приведет к отмене клавиатуры во всем мире без ссылки.

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

Ответ 4

В моем собственном приложении, когда у меня было более одного текстового поля, и хотелось бы, чтобы клавиатура ушла, независимо от того, какое из названных им полей, я просто написал метод и позволю каждому из них resignFirstResponder.

Я предполагаю, что в качестве программиста вы должны иметь четкое представление о том, сколько текстовых полей находится на вашем контроллере представления, и как вы можете получить к ним доступ, иначе он будет запутан, и приложение не будет выглядеть хорошо...:-P

Ответ 5

Вы можете проверить эти вопросы:

Вкратце: Вы можете вызвать beFirstResponder на какую-то другую вещь, которую вы выберете. Это может быть UIViewController или UIView. Раньше у меня была аналогичная проблема, мне нужно было отключить клавиатуру, когда я подталкивал контроллер своего вида к своему вызывающему абоненту, не зная, какое текстовое поле было первым ответчиком. Затем, на viewWillAppear моего контроллера представления, который я возвращал назад, я позвонил [selfirstFestponder], и клавиатура сдвинутого представления исчезла. Поскольку это создавало то, что текстовое поле было свободным, это первый ответчик