6

我目前有一个 UISearchBar(附加到 UISearchDisplayController),但我减小了搜索栏的宽度,以便在未选择搜索栏时在其右侧显示一个自定义按钮。该按钮用于访问其他视图。

但是,当我选择搜索栏然后按取消(甚至执行搜索)并返回到正常视图时,搜索栏应该使用我的自定义按钮显示,搜索栏会动画并占用所有空间按钮,不显示。本质上,当我只希望它占据屏幕的一部分时,搜索栏占据了屏幕的所有宽度。

有什么办法可以防止搜索栏动画到屏幕的整个宽度?

这就是我定义搜索栏的 CGRect 的方式:

self = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 45.0f)]
4

2 回答 2

3

In the end, the answer to this was simpler than I thought. For some reason the iPhone SDK fills up the width of the frame of the search bar, so I have to constantly reset it to the size I want every time the user presses the cancel button and the searchBarCancelButtonClicked() event is triggered. A simple [searchBar setFrame: frame] solved it. :)

Peter, the problem in the post you linked was slightly different, I had already been able to resize the search bar to what I wanted, what I needed was to stop it going back to full width. Thanks for the link though.

于 2010-06-17T09:39:29.893 回答
1

这篇 SO帖子可能会有所帮助。听起来您确实需要继承 UISearchBar 以阻止它进行正常绘图。

更新我想在 UINavigationBar 中使用 UISearchBar,并让它在触摸时调整大小以填充栏 - 就像 Safari 应用程序中的行为一样。我能做到这一点的唯一方法是直接使用 UISearchBar 。您的问题略有不同,但您可以尝试通过仅使用搜索栏来获得所需的 UI 行为;然后连接逻辑以进行之后的搜索;即不依赖 UISearchDisplayController?

于 2010-06-15T17:01:45.033 回答