2015-02-12 2 views
0

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

Проблема в том, что мой метод не называется. Есть ли что-нибудь еще, что нужно сделать?

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

ответ

2

У меня была проблема с этим, так что используйте метод, который перебирает все точки зрения, видя, если они TextViews и firstResponders. Не уверен в структуре UITextView, но вам может потребоваться проверить это, хотя оно может быть покрыто.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UIView *txt in self.view.subviews){ 
     if ([txt isKindOfClass:[UITextField class]] && [txt isFirstResponder]) { 
      [txt resignFirstResponder]; 
     } 
    } 
} 
+0

Метод не вызывается. Это моя проблема. – bruno

0

Использование UITapGestureRecognizer для отклонения клавиатуры.

Этот код на вашем viewdidload().

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

и в отклоненииKeyboard метод положить этот код.

-(void)dismissKeyboard 
{ 
    [TextFieldName resignFirstResponder]; 

} 
+0

Вы должны указать каждый UITextField таким образом, более общий подход будет лучше. –

1

Наилучший подход заключается в создании «блокировка вида», который является UIView, который занимает весь экран один раза в TextField becomesFirstResponder. Удостоверьтесь, что это на вершине всех просмотров (ну, конечно, помимо текста, конечно).

- (void)loadLockView { 
    CGRect bounds = [UIScreen mainScreen].bounds; 
    _lockView = [[UIView alloc] initWithFrame:bounds]; 
    _lockView.backgroundColor = [UIColor clearColor]; 

    UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lockViewTapped:)]; 
    [_lockView addGestureRecognizer:tgr]; 
    [self.view addSubview:_lockView]; 
} 

- (void)lockViewTapped:(UITapGestureRecognizer *)tgr { 
    [_lockView removeFromSuperView]; 
    [_textField resignFirstResponder]; 
} 
Смежные вопросы