iOS 7 doesn't show cancel button of search bar in navigation bar

后端 未结 8 1325
情书的邮戳
情书的邮戳 2021-02-04 02:47

In an app that\'s supposed to run on iOS 6 and iOS 7, the cancel button of the search bar embedded in the navigation bar is not shown anymore if the app is run on iOS 7. On iOS

8条回答
  •  心在旅途
    2021-02-04 03:18

    It looks like you're doing everything correctly, but apparently Apple has changed around some things in iOS 7. According to this SO question in iOS 7 the cancel button doesn't appear on a UISearchBar embedded in a UINavigationBar.

    According to the developer documentation, the showsCancelButton property may have a slightly different effect than the setShowsCancelButton:Animated method. Try doing this:

    searchBar.showsCancelButton = YES;
    [searchBar setShowsCancelButton:YES animated:YES];
    

    I'm not sure if that will have any impact. You could also try placing the code in a different delegate method:

    - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar; // return NO to not become first responder
    - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar; // called when text starts editing
    

    You may also want to checkout the iOS 7 changelog. It looks like Apple changed the behavior or a UISearchDisplayController / UISearchBar when added to a UINavigationBar. Take a look at the last bullet point under the UIKit section (although it isn't clear exactly what was changed).


    You may also want to try using a UISerachDisplayController. What might be even easier is to embed the UISearchBar in the header of a UITableView.

提交回复
热议问题