6

我在 Google 和 Stackoverflow 上搜索了几个小时,尝试了它们但没有运气。

我上面有一个 UITableViewtblDepartment和一个 UISearchBar studentSearch

当用户在搜索框外点击时,我添加了一个UITapGestureRecognizer以从文本框中关闭键盘:studentSearch

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tblDepartment addGestureRecognizer:gestureRecognizer];

- (void)hideKeyboard
{
    [studentSearch resignFirstResponder];
}

之后,didSelectRowAtIndexPath:(NSIndexPath *)indexPath当我在tblDepartment. 我知道gestureRecognizer是这个原因。

那么,如何隐藏键盘并仍然允许用户选择行?

我尝试了这段代码,但没有奏效:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isDescendantOfView:tblDepartment]) {
        return NO;
    }
    return YES;
}
4

1 回答 1

14

将手势识别器的 cancelsTouchesInView 属性设置为 NO,默认为 YES,如果 GR 识别其手势,它会阻止触摸到达底层视图。

于 2012-07-30T02:57:10.113 回答