2015-06-25 2 views
-4

Я новичок в разработке iOS. Я хочу скрыть клавиатуру, когда вы нажимаете за пределами TextField. Мой TextField находится в ячейке от UITableView.Как скрыть клавиатуру на ощупь UITableView в iOS Obj-C

Я пытался следовать некоторым из этих ссылок, однако без каких-либо

успеха:

Dismiss keyboard on touch anywhere outside UITextField

Dismiss keyboard by touching background of UITableView

Hide keyboard when scroll UITableView

Я пытаюсь найти самый простой способ это возможно. Заранее спасибо

+0

возможный дубликат [Отклонить клавиатуры на ощупь в любом месте за пределами UITextField] (http://stackoverflow.com/questions/11274119/dismiss-keyboard-on-touch-anywhere-outside-uitextfield) – rghome

+0

Но не хотите писать такой длинный метод, чтобы следовать ... – Eric

+0

Есть более короткие методы, такие как ну в этом вопросе. По-моему, это тот же вопрос. – rghome

ответ

6

Это самый простой способ уволить клавиатуру

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
    [tableView addGestureRecognizer:gestureRecognizer]; 
} 
- (void)hideKeyboard 
{ 
    [self.view endEditing:YES]; 
} 
0

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

- (void) tapGesture : (UIGestureRecognizer *) gestureRecognizer { 
    for (UIView *subview in view.subviews) { 
     if([subview isKindOfClass : [UITextField class]]) { 
      UITextField *tf = (UITextField *) subview; 
      [tf resignFirstResponder]; 
     } 
    } 
} 
0

Добавить делегат класс UITextFieldDelegate

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

Вам нужно добавить UITapGestureRecogniser и присвоить его мнению, а затем call resign first responder в текстовом поле на его селекторе.

0

Попробуйте этот код Напишите следующий код в viewDidLoad и добавьте UIGestureRecognizerDelegate в .h файл.

UITapGestureRecognizer *singleFingerTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self 
             action:@selector(handleSingleTap:)]; 
[singleFingerTap setDelegate:self]; 
[self.view addGestureRecognizer:singleFingerTap]; 

// Listen for keyboard appearances and disappearances 

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(keyboardDidShow:) 
             name:UIKeyboardDidShowNotification 
             object:nil]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(keyboardDidHide:) 
             name:UIKeyboardDidHideNotification 
             object:nil]; 

Делегаты клавиатуры Появления и исчезновения

- (void)keyboardDidShow: (NSNotification *) notif{ 
// Do something here 
    tblview.tag = 1; 
} 
- (void)keyboardDidHide: (NSNotification *) notif{ 
// Do something here 
tblview.tag = 0; 
} 

функция события UITapGestureRecognizer для скрытия клавиатуры

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { 
    blview.tag = 0; 
    [self.view endEditing:YES]; 
} 

UIGestureRecognizer делегат

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ 
if(tblview.tag == 1){ 
    return TRUE; 
} 
else{ 
    return FALSE; 
    } 
} 
0

Я использую ю е решение в двух частях:

Уволить клавиатуры на TableView/CollectionView крана:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
gestureRecognizer.cancelsTouchesInView= NO; 
[self.collectionView addGestureRecognizer:gestureRecognizer]; 

(Не забудьте cancelsTouchesInView набор для NO, чтобы получить сенсорное событие зрения TableView/сбора)

Для отклонять клавиатуры на свитке (как Tableview/CollectionView является подклассом UIScrollView):

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    [self.view endEditing:YES]; 
} 

Надеется, что это помогает кому-то.

3

Это не о контакте, только работает, когда свиток

TableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 

также

UIScrollViewKeyboardDismissModeInteractive // ​​клавиатура следующим перетягивание выпалить экран, и может потянуться вверх снова, чтобы отменить отставку

0

Это поможет вам ..

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

Самый простой способ заключается в Alloc ТАР Жест в viewDidLoad, а затем скрыть клавиатуру

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
    [_tableView addGestureRecognizer:gestureRecognizer]; 
} 
- (void)hideKeyboard 
{ 
    [self.view endEditing:YES]; 
} 

Или на GitHub Вы, конечно, нашел библиотеку, которая скрывает клавиатура

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