如何隐藏键盘触摸UITableView iOS中的Obj-C
我是iOS开发新手。 我想要在TextField
外部轻敲时隐藏键盘。 我的TextField
在UITableView
的单元格中。
我试图追随其中一些链接,但没有成功 –
在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上,你肯定会发现一个隐藏键盘的库