Вопрос по ios, objective-c – скрытие клавиатуры IOS [дубликат]

39

This question already has an answer here:

Dismiss keyboard on touch anywhere outside UITextField 8 answers

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

-(IBAction)backgroundTouched:(id)sender {
    [textField1 resignFirstResponder];
    [buildLength resignFirstResponder];
    [buildWidth resignFirstResponder];
    [ridgeWidth resignFirstResponder];
    [rafterWidth resignFirstResponder];
    [hipWidth resignFirstResponder];
    [eaveOverhang resignFirstResponder];
    [spacing resignFirstResponder];
}
Согласитесь с @Russ ... сенсорными событиями на контроллере представления является более простой путь. Но это все еще таинственно, если это работает для textField1. Почему не другие? Я полагаю, что другие маркеры не годятся (например, «buildLength» не инициализирован должным образом). danh
Какой объект получаетbackgroundTouched: действие? Это вид? Какой-то объект, который вы положили за все? То, как мне удалось скрыть клавиатуру на iOS, это переопределить ViewController'ы.touchesEnded:withEvent: , Он вызывается, когда другие объекты не могут обработать событие касания. Там, где я ухожу в отставку первый ответчик, хотя вы должны проверитьisFirstResponder потому что, если вы не потребляете сенсорный экран, вы должны называть супер. Russ

Ваш Ответ

4   ответа
6

Вы также можете перебирать массив представлений (например, подпредставления вашего UIView) и вручную переставлять клавиатуру, это хорошо, если вы не хотите подавать в отставку на ВСЕХ подпредставлений в родительском UIView.

- (void)viewDidLoad
{
    self.view.userInteractionEnabled = TRUE;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //Iterate through your subviews, or some other custom array of views
    for (UIView *view in self.view.subviews)
        [view resignFirstResponder];
}
27

Попробуй это:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
     [[self view] endEditing:YES];
}
188

Если вы хотите скрыть клавиатуру, когда вы нажимаете кнопку, и у вас есть более одногоUITextFields в вашемview, тогда вы должны использовать:

[self.view endEditing:YES];

Нажмите в любом месте вида, и клавиатура исчезнет.

Я заметил, что в некоторых случаях этот метод работает после некоторой задержки около 0,3 с максимум. Я имею в виду, resignFirstResponder удаляет клавиатуру немедленно. Но этот метод не и вы должны использовать executeSelector после задержки, иногда после использования этого.
2

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

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{  
    [currentSelectedTextField resignFirstResponder];
}

Похожие вопросы