【发布时间】:2012-05-13 00:30:10
【问题描述】:
我的 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
还有其他隐藏键盘的方法吗?
【问题讨论】:
-
在任何情况下,您都需要检测事件并使用 `[txtfield resignFirstResponder];` 而不获取触摸事件或检测任何您无法做到的事件..
-
如果用户触摸视图,你想退出键盘
-
只需将手势识别器添加到表格背景:[tableview.backgroundView addGestureRecognizer:singleTap];这意味着 didSelectRowAtIndexPath 仍然可以工作。