I have a UISearchBar nested as a UIBarButtonItem within a UIToolbar. The basic functionality works, but the cancel button and the scope bar refuse to display. I've tried enabling them in the interface builder, and I've also tried manually calling [searchBar setShowsCancelButton:YES]
, but neither method works. Any ideas?
This is on an iPad. I tried in iOS 3, and it doesn't work in 4.2, either.
You need to wrap the UISearchBar with another view.
UISearchBar *searchBar = [UISearchBar new];
UIView *searchBarContainer = [[UIView alloc] initWithFrame:searchBar.frame];
[searchBarContainer addSubview:searchBar];
UIBarButtonItem *searchBarItem =
[[UIBarButtonItem alloc] initWithCustomView:searchBarContainer];
You've simply hit a limitation on how UISearchBar works. One workaround is to layer the UISearchBar over the UIToolbar rather than having it genuinely live in the toolbar. This works visually because a search bar is painted just like a toolbar - their gradients are the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With