2015-09-26 3 views
0

У меня есть UITextFields, которые открывают клавиатуру.Обнаружение касания НЕ на UITextField (чтобы скрыть клавиатуру)

Мой вопрос, как я могу обнаружить прикосновение к экрану, что ни в коем UITextField

псевдокод, что мне нужно:

if(screen is touched) 
    if(touched view is NOT a UITextField) 
     [self.view endEditing:YES]; 

есть простой способ сделать это? Или еще один простой способ скрыть клавиатуру, когда UITextField не тронут?

Спасибо!

ответ

2

Просто добавьте UITapGestureRecognizer к вашему мнению и использовать [self.view endEditing:YES];

- (void)addTapGesutre { 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self 
                      action:@selector(handleTapGesture:)]; 
    tapGesture.numberOfTapsRequired = 1; 
    [self.view addGestureRecognizer:tapGesture]; 
} 

- (void)handleTapGesture:(UITapGestureRecognizer *)tap { 
    if (tap.state == UIGestureRecognizerStateEnded) { 
     [self keyboardDismiss]; 
    } 
} 

- (void)keyboardDismiss { 
    [self.view endEditing:YES]; 
} 
+0

Спасибо, это работает, однако оно не работает для представлений, которые уже обнаруживают краны (например, кнопки). Для них я просто добавил '[self keyboardDismiss]' к своим IBActions. – user1282637

0

Фактически вы можете использовать метод прикосновения.

Посмотрите на документацию here.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    view.endEditing(true) 
} 

Из документации -

Если переопределить этот метод без вызова супер (обычное использование шаблон), вы должны также переопределить другие методы для обработки тронуть события, если только в качестве заглушки (пустые) реализации.

+0

FYI - вопрос помечена Objective-C. Ответы должны быть опубликованы на соответствующем языке. – rmaddy

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