我无法在我的iPhone应用程序中使用键盘离开,因为UIView
即使在制作控制器时也是不可触摸的,因为我有一个UITableView
占用剩下的可用的屏幕。
我很想知道如何通过点击firstResponder
来退出键盘UITableView
?有没有办法监视UITableView
上的触摸事件,即使它不是要选择可点击的单元格。
基本上,我知道如果单元格触发事件,如何重新键盘键盘,但如果我点击UITableView
的不可点击部分,我仍然希望键盘消失。
答案 0 :(得分:6)
2个选项:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { [self.view endEditing:YES]; }
就我个人而言,我通常会在桌面滚动上进行,因为我不喜欢单击以关闭键盘。
答案 1 :(得分:3)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITapGestureRecognizer *doubleTap =
[[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(tapDetected:)];
doubleTap.numberOfTapsRequired = 1;
[self.tableView addGestureRecognizer:doubleTap];
[doubleTap release];
}
- (IBAction)tapDetected:(UIGestureRecognizer *)sender
{
CGPoint p = [sender locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p];
if(indexPath == nil)
{
NSLog(@"empty");
}
else
{
[textField resignFirstResponder];
}
}
我认为这会有所帮助......试试吧..
答案 2 :(得分:3)
添加点击手势识别器是一个有趣的解决方案,但有一个替代方案,您不需要编写任何代码!
您可以在Interface Builder中将属性 keyboardDismissMode 设置为"在拖动时关闭"为您的表格视图。它是从UIScrollView继承的属性,每当您滚动表格视图时,键盘都会被解除。
答案 3 :(得分:0)
@property (weak, nonatomic) UITextField *activeTextField; // keeps track of whose keyboard is being displayed.
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.activeTextField = textField;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// if (indexPath equal to something then)
[self.activeTextField resignFirstResponder];
}