我的UIViewController层次结构如下
UIView
UIScrollView
UITableView
UITableViewCell
UITextField
UITableView以编程方式添加到视图控制器中。 当用户在视图或UITableView上点击UTTextField外部时,我想隐藏键盘 当用户点击其他UITableView行时,我正在执行一些方法
我试过
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
UIScrollView不会发送触摸事件。
我尝试添加点按手势
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[singleTap setNumberOfTapsRequired:1];
[[self view] addGestureRecognizer:singleTap];
但是使用TapGesture,会隐藏以下事件
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
还有其他可能隐藏键盘的方法吗?
答案 0 :(得分:2)
使用代码:[self.view endEditing:YES];
答案 1 :(得分:1)
使用UITextFieldDelegate 和方法
– textFieldShouldEndEditing:(UITextField*) txtField
{
[txtField resignKeyPads];
return YES:
}
这也可以通过scrollview delgate来完成
-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//resign all keypads of all textfields use array containing keypads
}
更重要的是将UIView的类更改为UIControl并创建方法IBAction并将UIControl touchupInside连接到该ibaction,它将重新签名键盘
答案 2 :(得分:0)
如果您仍想使用点按手势,则需要将手势识别器添加到表格背景中,如下所示:
[tableView.backgroundView addGestureRecognizer:singleTap];
这样可以防止隐藏:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
答案 3 :(得分:0)
如果你想在背景视图上放置一个手势识别器,你需要确保它有一个。
添加
self.tableView.backgroundView = [[UIView alloc] initWithFrame:self.tableView.bounds];
答案 4 :(得分:0)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//cell design code goes here.
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 1;
//tapGestureRecognizer.delegate = self;
[cell addGestureRecognizer:doubleTapGestureRecognizer];
return cell;
}
//Handle the click event
-(void) handleDoubleTap:(UITapGestureRecognizer*)sender{
[self.view endEditing:YES];
UITableViewCell * cell =(UITableViewCell*) sender.view;
//get the selected table indexpath.
NSIndexPath * indexPath= [tblCart indexPathForCell:cell]; //to handle the scroll
tblCart scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
NSLog(@"Comming");
}
我希望它可以帮助您解决同样的问题。 http://greatindiaclub.oliwy.net/?p=1180