1

我想,我需要另一个好的建议。到目前为止,我的解决方案似乎运行良好,但现在......

好吧,事实:

  1. 我有一个普通的 UIViewController
  2. 在 UINavigationBar 顶部,在 UISearchBar 后面,最初隐藏
  3. 在底部一个 UIToolBar
  4. 我的主视图控制器支持 UISearchBarDelegate

UIToolBar 上的开关切换 UISearchBar 的可见性

    if (show) {
        [searchBar setShowsCancelButton:TRUE animated:TRUE];
        [navigationBar setHidden:TRUE];
        [searchBar becomeFirstResponder];
    }
    else {
        [navigationBar setHidden:FALSE];
        [searchBar setShowsCancelButton:FALSE animated:TRUE];
    }
    searchIsVisible = !searchIsVisible;

周围有一些动画,但例如我已经放弃了这个。它运行良好,我可以输入搜索字符串并使用“searchBarSearchButtonClicked:”访问它。我还可以对“searchBarCancelButtonClicked:”做出反应

我以前没有注意到它,或者它现在发生了 - 我偶尔会在没有进一步通知的情况下捕捉到 EXC BAD ACCESS。我很确定,“[searchBar becomeFirstResponder];” 声明就是这样做的原因,因为我也可以通过点击搜索线来激发它。

不幸的是,我无法弄清楚,原因是什么。我是否必须提供另一个委托方法,就像我现在拥有的两个?

欢迎任何指针。

4

1 回答 1

0

我的猜测是 searchBar 正在被释放,而你不知道。可能是因为您的视图控制器正在被释放和/或您的视图层次结构。尝试打破你的 deallocs 并查看它们何时发生是否有意义。

于 2009-12-03T05:52:12.810 回答