Ios UISearchDisplayController取消按钮不工作

Ios UISearchDisplayController取消按钮不工作,ios,objective-c,ios7,uisearchbar,uisearchdisplaycontroller,Ios,Objective C,Ios7,Uisearchbar,Uisearchdisplaycontroller,在iOS 7中使用UISearchDisplayController时,我会有一些奇怪的行为(仅供参考:我碰巧是在iOS 7上开发的,但我没有在任何其他版本上测试过) 设置: UIViewController(链接到UINavigationController),它具有: 1UINavigationItem来自父级UINavigationController,右侧的UIBarButtonItem搜索按钮连接到showSearchbar方法 另一个UINavigationItem位于保存UISeg

在iOS 7中使用
UISearchDisplayController
时,我会有一些奇怪的行为(仅供参考:我碰巧是在iOS 7上开发的,但我没有在任何其他版本上测试过)

设置:

  • UIViewController
    (链接到
    UINavigationController
    ),它具有:
  • 1
    UINavigationItem
    来自父级
    UINavigationController
    ,右侧的
    UIBarButtonItem
    搜索按钮连接到
    showSearchbar
    方法
  • 另一个
    UINavigationItem
    位于保存
    UISegmentedControl
  • 1带有
    UISearchDisplayController
    拖放到标题上的
    UITableView
  • ViewDidLoad
    中,我添加了
    self.tableView.contentOffset=CGPointMake(0,44)
  • -(iAction)显示搜索栏{[self.searchDisplayController设置活动:是动画:是];}
  • 通过以上所有操作,只要我加载视图,
    UISearchBar
    就会隐藏在我的
    UINavigationItem
    +
    UISegmentedControl
    (上面的1.2)后面-这是预期的和预期的

    然而,我看到了两种不同的行为:

  • 如果我向下拖动
    UITableView
    直到显示
    UISearchBar
    ,然后单击
    UISearchBar
    中的
    UITextField
    ,或者单击搜索按钮(在上面的1.1中),就会显示
    UISearchDisplayController
    。发生这种情况时,my
    UINavigationItem
    s都会从屏幕上移,而
    UITextField
    会缩短,并出现一个取消文本按钮。当我单击“取消”按钮时,
    UISearchDisplayController
    将被停用-这是预期的
  • 但是,如果在单击搜索按钮以显示
    UISearchDisplayController
    之前,我没有拖动
    UITableView
    以显示
    UISearchBar
    ,当我单击取消按钮时,它将不起作用。相反,它就像触摸了
    UITextField
  • 我已尝试将我的
    showSearchbar
    方法更改为
    [self.searchBar becomeFirstResponder],但这不会改变任何事情

    在第二种行为中,当
    UISearchDisplayController
    处于活动状态时,它看起来似乎甚至不存在取消按钮(如
    UISearchBar
    仍在
    UITableView
    上时的状态)


    有没有关于如何使“取消”按钮工作的想法?

    我也有同样的行为。真奇怪。如果你明白了,请写下你的解决方法。现在,我唯一的解决办法是将UITableView滚动到顶部,然后显示搜索结果,如下所示:[self.tableView scrollRectToVisible:CGRectMake(0,0,1,1)动画:否];[self.searchBar成为第一响应者];确认了解决方案的工作。我使用了
    tv.contentOffset=CGPointMake(0,-64)
    ,因为我的TableView在导航栏下流动,这似乎是必要的。