如何在iOS Obj-C中隐藏触摸屏上的键盘UITableView
我是iOS开发新手。我想在点击如何在iOS Obj-C中隐藏触摸屏上的键盘UITableView,ios,objective-c,iphone,uitextfield,Ios,Objective C,Iphone,Uitextfield,我是iOS开发新手。我想在点击TextField外部时隐藏键盘。我的TextField位于UITableView的单元格中 我曾尝试关注其中一些链接,但没有成功-- 我试图找到最简单的方法。 提前感谢您可以使用点击手势隐藏键盘 - (void) tapGesture : (UIGestureRecognizer *) gestureRecognizer { for (UIView *subview in view.subviews) { if([subview
TextField
外部时隐藏键盘。我的TextField
位于UITableView
的单元格中
我曾尝试关注其中一些链接,但没有成功--
我试图找到最简单的方法。
提前感谢您可以使用点击手势隐藏键盘
- (void) tapGesture : (UIGestureRecognizer *) gestureRecognizer {
for (UIView *subview in view.subviews) {
if([subview isKindOfClass : [UITextField class]] ) {
UITextField *tf = (UITextField *) subview;
[tf resignFirstResponder];
}
}
}
添加委托类
UITextFieldDelegate
-(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];
}
您需要添加一个UITapGestureRecograiser并将其分配给视图,然后在其选择器的文本字段上调用responder first responder。试试这段代码 在viewDidLoad中编写以下代码,并在.h文件中添加UIgestureRecognitizerDelegate
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;
}
UITapGestureRecognitor隐藏键盘的事件函数
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
blview.tag = 0;
[self.view endEditing: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];
}
UIgestureRecognitor委托
-(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的子类):
希望它能帮助别人。这与触摸无关,只在滚动时起作用
TableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
也有
UIScrollViewKeyboardDismissModeInteractive//键盘跟随拖动触摸屏,可能会再次向上拉以取消解除这将对您有所帮助
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
最简单的方法是在viewDidLoad中分配一个点击手势,然后隐藏键盘
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
blview.tag = 0;
[self.view endEditing: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];
}
或者在github上,您肯定发现了一个库,它隐藏了您的键盘可能的副本,但不想编写这么长的方法来遵循……在这个问题上,也有较短的方法。我相信这是同样的问题。这也会帮助你…-(void)touchesbeated:(NSSet*)toucheevent:(UIEvent*)event{[self.view endEditing:YES];}