如何在 iOS Obj-C 中隐藏触摸 UITableView 的键盘
How to hide keyboard on touch UITableView in iOS Obj-C
我是 iOS 开发新手。我想在 TextField
之外点击时隐藏键盘。我的 TextField
在 UITableView
的一个单元格中。
我尝试点击其中一些链接,但没有成功--
Dismiss keyboard on touch anywhere outside UITextField
Dismiss keyboard by touching background of UITableView
Hide keyboard when scroll UITableView
我正在尝试找到最简单的方法。
提前致谢
您可以使用点击手势隐藏键盘。
- (void) tapGesture : (UIGestureRecognizer *) gestureRecognizer {
for (UIView *subview in view.subviews) {
if([subview isKindOfClass : [UITextField class]] ) {
UITextField *tf = (UITextField *) subview;
[tf resignFirstResponder];
}
}
}
添加代表classUITextFieldDelegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
这是关闭键盘的最简单方法
- (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];
}
您需要添加一个 UITapGestureRecogniser 并将其分配给视图,然后在其选择器的文本字段上调用 resign first responder。
试试这个代码
在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;
}
}
我分两部分使用解决方案:
要在 tableview/collectionview 上关闭键盘,请点击:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
gestureRecognizer.cancelsTouchesInView= NO;
[self.collectionView addGestureRecognizer:gestureRecognizer];
(不要忘记将 cancelsTouchesInView
设置为 NO
以获得 tableview/collection 视图的触摸事件)
在滚动时关闭键盘(因为 tableview/collectionview 是 UIScrollView 的子类):
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[self.view endEditing:YES];
}
希望对大家有所帮助。
与触摸无关,仅在滚动时有效
TableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
还有
UIScrollViewKeyboardDismissModeInteractive // 键盘跟随拖动触屏,可再次向上拉取消dismiss
这对你有帮助..
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
最简单的方法是在viewDidLoad中分配一个tap Gesture然后隐藏键盘
- (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 上你肯定找到了一个隐藏键盘的库
我是 iOS 开发新手。我想在 TextField
之外点击时隐藏键盘。我的 TextField
在 UITableView
的一个单元格中。
我尝试点击其中一些链接,但没有成功--
Dismiss keyboard on touch anywhere outside UITextField
Dismiss keyboard by touching background of UITableView
Hide keyboard when scroll UITableView
我正在尝试找到最简单的方法。 提前致谢
您可以使用点击手势隐藏键盘。
- (void) tapGesture : (UIGestureRecognizer *) gestureRecognizer {
for (UIView *subview in view.subviews) {
if([subview isKindOfClass : [UITextField class]] ) {
UITextField *tf = (UITextField *) subview;
[tf resignFirstResponder];
}
}
}
添加代表classUITextFieldDelegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
这是关闭键盘的最简单方法
- (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];
}
您需要添加一个 UITapGestureRecogniser 并将其分配给视图,然后在其选择器的文本字段上调用 resign first responder。
试试这个代码 在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;
}
}
我分两部分使用解决方案:
要在 tableview/collectionview 上关闭键盘,请点击:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
gestureRecognizer.cancelsTouchesInView= NO;
[self.collectionView addGestureRecognizer:gestureRecognizer];
(不要忘记将 cancelsTouchesInView
设置为 NO
以获得 tableview/collection 视图的触摸事件)
在滚动时关闭键盘(因为 tableview/collectionview 是 UIScrollView 的子类):
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[self.view endEditing:YES];
}
希望对大家有所帮助。
与触摸无关,仅在滚动时有效
TableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
还有
UIScrollViewKeyboardDismissModeInteractive // 键盘跟随拖动触屏,可再次向上拉取消dismiss
这对你有帮助..
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
最简单的方法是在viewDidLoad中分配一个tap Gesture然后隐藏键盘
- (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 上你肯定找到了一个隐藏键盘的库