Как скрыть клавиатуру при касании экрана (панель поиска)

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

Может ли кто-нибудь сказать мне, как это сделать?

Спасибо.


person Rick    schedule 06.06.2013    source источник
comment
Пробовали ли вы этот ответ Jensen2k: stackoverflow.com/questions/5306240/   -  person mfaerevaag    schedule 06.06.2013
comment
Спасибо за ответ. Да, я тоже пробовал это. Проблема в том, что у меня нет текстового поля, к которому подключена клавиатура. Панель поиска вызывает клавиатуру, поэтому я должен отказаться от нее с помощью панели поиска. Вы знаете другое решение? Спасибо, в любом случае!   -  person Rick    schedule 06.06.2013


Ответы (4)


Попробуй это

в вашем файле .h добавьте UISearchBar

@property (strong, nonatomic) IBOutlet UISearchBar *searchBar; 

в вашем .m файле

- (void)viewDidLoad
{
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)];

    [self.view addGestureRecognizer:tap];
}


- (void) dismissKeyboard
{
    // add self
    [self.searchBar resignFirstResponder];
}
person iMubarak    schedule 06.06.2013
comment
Попробовал, первая часть не выдала никаких ошибок, вторая часть снова говорит: «Неизвестный получатель 'searchBar'; вы имели в виду UISearchBar? Спасибо за помощь. Я думаю, это близко. - person Rick; 06.06.2013
comment
Да, я имею в виду UISearchBar. Определите свой UISearchBar IBOutLet в файле интерфейса h. - person iMubarak; 06.06.2013
comment
Да, я забыл ввести: @synthesize searchBar; в моем файле .m. Теперь это работает. Спасибо - person Rick; 06.06.2013
comment
Вы можете выбрать это как ответ, если он решен. Это поможет другим узнать ответ. Спасибо. - person iMubarak; 06.06.2013

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   [yourTextField1 resignFirstResponder];
   [yourTextField2 resignFirstResponder];
   [yourTextField3 resignFirstResponder];
   [yourSearchBar resignFirstResponder];
   //etc
}

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

person John Doe    schedule 06.06.2013
comment
Тоже пробовал пару раз. Я получаю следующую ошибку: Неизвестный получатель 'searchBar' Вы имели в виду UIDearchBar? - person Rick; 06.06.2013

Попробуйте использовать этот

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
  [self.view endEditing:YES];
}
person Dharmbir Singh    schedule 06.06.2013
comment
Я не получаю никаких ошибок, но это тоже не работает. Ничего не происходит. Спасибо, в любом случае! - person Rick; 06.06.2013
comment
если вы используете вид прокрутки внутри, то он не будет работать, иначе он будет работать. - person Dharmbir Singh; 12.11.2015

Вы можете добавить UITapGestureRecognizer, чтобы закрыть клавиатуру.

- (void)viewDidLoad {
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap];
}

- (void) dismissKeyboard {
     [self.view endEditing:YES];
}
person VikashVikash SinghSingh    schedule 11.05.2016