UISearchBar取消按钮可见但不起作用

时间:2014-02-07 05:03:48

标签: ios objective-c ios7 uisearchdisplaycontroller

我遇到与Using becomeFirstResponder causes cancel button to not work相同的问题,除了解决方案在我的情况下不起作用。

我创建了一个故事板项目,其中包含一个导航控制器和一个表视图控制器。我在表视图中添加了一个UISearchDisplayController,一切正常,直到我尝试访问searchDisplayController,如下面的代码片段所示。我正在使用节索引并将UITableViewIndexSearch(或@“{search}”)添加到节标题的顶部,以便放大镜显示在A-Z索引的开头。当我单击部分索引时,将调用以下函数:

- (NSInteger) tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
  if ([title isEqualToString:UITableViewIndexSearch])
  {
    [self.searchDisplayController setActive:TRUE animated:TRUE];   // Either of these two lines
    [self.searchDisplayController.searchBar becomeFirstResponder]; // will cause the search bar cancel button to not work
    return 0;
  }
  return index - 1;
}

如果我注释掉两个访问searchDisplayController的行,则搜索栏取消按钮按预期工作。如果代码中的两行中的任何一行,则搜索栏上的取消按钮就像是在那里一样。删除becomeFirstResponder行意味着我必须在搜索栏字段中单击/触摸才能将焦点转移到它,因此在这种情况下,当我单击取消按钮时,搜索栏会获得焦点。这就好像通过搜索栏透明地看到取消按钮但无法点击/触摸。取出这两行代码,取消按钮再次工作。

到底发生了什么事?

0 个答案:

没有答案