如何隐藏键盘触摸UITableView iOS中的Obj-C

我是iOS开发新手。 我想要在TextField外部轻敲时隐藏键盘。 我的TextFieldUITableView的单元格中。

我试图追随其中一些链接,但没有成功 –

在UITextField外面的任何位置轻触键盘

通过触摸UITableView的背景来closures键盘

滚动UITableView时隐藏键盘

我试图find最简单的方法。 提前致谢

这是解除键盘最简单的方法

 - (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]; } 

这不是关于触摸,只在滚动时才工作

 TableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 

也有

UIScrollViewKeyboardDismissModeInteractive //键盘跟随拖动触摸屏幕,并可能再次向上拉取消closures

添加委托类UITextFieldDelegate

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

您需要添加一个UITapGestureRecogniser并将其分配给该视图,然后在其select器上的文本字段上调用resign first responder。

您可以使用“点按”手势来隐藏键盘。

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

试试这段代码在viewDidLoad中写入以下代码,并在.h文件中添加UIGestureRecognizerDelegate。

  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; } } 

我使用的解决scheme分为两部分:

要closurestableview / collectionview tap上的键盘:

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

(不要忘记cancelsTouchesInView触摸视图设置为NO来获取cancelsTouchesInView视图/集合视图的触摸事件)

closures滚动键盘(因为tableview / collectionview是UIScrollView的子类):

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

希望它有助于某人。

这将帮助你..

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

最简单的方法是在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上,你肯定会发现一个隐藏键盘的库