Отклонение первого ответчика / клавиатуры с несколькими текстовыми полями - PullRequest
7 голосов
/ 19 июля 2011

Как серьезно после прохождения этого ...

Простой способ уволить клавиатуру?

... У меня есть несколько TextFields и несколько TextViews. Разве нет способа создать пакет или группу Dismiss First Responder для всех текстовых полей? Мне нужно будет сделать метод для каждого поля? Может быть, я что-то упустил из этой ссылки?

Может быть, я смогу выполнить что-то вроде этого:

https://stackoverflow.com/questions/3282837/problem-with-multiple-textfields-to-make-the-keyboard-dissapear

Будет ли последний иметь смысл? Заранее спасибо.

= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

Я понял это ...

Controller.h

@interface Controller : UIViewController <UITextFieldDelegate> {
    IBOutlet UITextField *clickedDone;
}
@property (nonatomic, retain) IBOutlet UITextField *clickedDone;

Controller.m

#import "Controller.h"
@implementation Controller
@synthesize clickedDone;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [clickedDone setDelegate:self];
}

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

Ответы [ 4 ]

30 голосов
/ 19 июля 2011

Представление имеет метод endEditing:, который вы можете использовать. Документы говорят

Заставляет представление (или одно из его встроенных текстовых полей) отказаться от статуса первого респондента.

В вашем контроллере вы можете просто позвонить:

[[self view] endEditing:YES];
4 голосов
/ 19 июля 2011
clickedDone.returnKeyType = UIReturnKeyDone;  // in viewDidLoad

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
   [textField resignFirstResponder];
   return YES;    
}
2 голосов
/ 15 октября 2014

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

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [self.view endEditing:YES];
}
1 голос
/ 10 ноября 2012

Лучший ответ:

  1. Добавлен протокол UITextFieldDelegate в ваш viewcontroller @interface ViewController: UIViewController
  2. В xib выберите textField в разделе Ulitlites справа боковая панель XCode в подразделе «Инспектор соединений», свяжите делегата textField с владельцем файла .xib.
  3. В вашу реализацию Viewcontroller включите следующее

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