0

我的 UINavigationItem 中有一个 UISearchBar,如下所示:

searchBar = [[UISearchBar alloc] init];
[searchBar setDelegate:self];
self.navigationItem.titleView = searchBar;

然后在我的表格视图中我使用:

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.searchBar resignFirstResponder];
}

-- 这样如果用户滚动浏览结果,键盘就会消失。

但是,现在当我再次点击搜索栏时,我无法让它拉起键盘。我认为视图会自动执行此操作,但它不会(显然)。我试过:

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar becomeFirstResponder];
}

它没有用(我没想到它会)

4

1 回答 1

0

searchBarTextDidBeginEditing在搜索栏成为第一响应者之前不会被调用,所以很明显你的becomeFirstResponder电话甚至没有被调用。

我和您一样感到惊讶的是,搜索栏在被点击时不会自动成为第一响应者。是否有其他代码(上面未显示)禁用它?你有没有实施searchBarShouldBeginEditing:返回NO?

编辑:聊天后,问题是他没有为 UISearchBar 分配一个框架(从他的代码中可以看出)。

于 2013-04-02T23:09:45.923 回答