![](/img/trans.png)
[英]How to add a toolbar to the BOTTOM of a UITableView obj-c/ios/xcode
[英]How to hide keyboard on touch UITableView in iOS Obj-C
我是 iOS 开发的新手。 我想在TextField
之外点击时隐藏键盘。 我的TextField
位于UITableView
的单元格中。
我试图遵循其中一些链接,但没有任何成功--
我试图找到最简单的方法。 提前致谢
这是关闭键盘的最简单方法
- (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 // 键盘跟随拖动触屏,再次向上拉可取消关闭
您可以使用点击手势隐藏键盘。
- (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;
}
您需要添加一个 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 view 的触摸事件)
在滚动时关闭键盘(因为 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中分配一个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 上你肯定找到了一个隐藏键盘的库
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.