iOS 7 でa を使用すると、奇妙な動作がUISearchDisplayController
発生します (参考: たまたま iOS 7 で開発していますが、他のバージョンではテストしていません)。
設定:
UIViewController
( にリンクされているUINavigationController
) には、次のものがあります。- メソッドに接続された右側の検索ボタンを持つ
UINavigationItem
親からの1UINavigationController
UIBarButtonItem
showSearchbar
- を保持するその下の追加の
UINavigationItem
右UISegmentedControl
- 1
UITableView
をUISearchDisplayController
ヘッダーにドラッグ アンド ドロップ - に
ViewDidLoad
、追加しましたself.tableView.contentOffset = CGPointMake(0, 44);
- メソッドに接続された右側の検索ボタンを持つ
-(IBAction)showSearchbar{ [self.searchDisplayController setActive:YES animated:YES]; }
上記のすべてで、ビューをロードするとすぐに+ (上記の 1.2) のUISearchBar
後ろに隠れます - これは予想どおりであり、意図したとおりです。UINavigationItem
UISegmentedControl
ただし、次の 2 つの異なる動作が見られます。
- が表示される
UITableView
まで を下にドラッグし、 のをクリックするか、検索ボタン (上記の 1.1) をクリックすると、が表示されます。これが発生すると、両方の が画面の外に移動し、が短くなり、[キャンセル] テキスト ボタンが表示されます。[キャンセル] ボタンをクリックすると、が非アクティブになります - これは予期されることです。UISearchBar
UITextField
UISearchBar
UISearchDisplayController
UINavigationItem
UITextField
UISearchDisplayController
- ただし、検索ボタンをクリックして を表示する前に をドラッグして表示しないと、[キャンセル] ボタンをクリックしても機能しません。代わりに、それはあたかも触れているかのようです。
UITableView
UISearchBar
UISearchDisplayController
UITextField
showSearchbar
メソッドをに変更してみまし[self.searchBar becomeFirstResponder];
たが、何も変わりません。
2 番目の動作では、UISearchDisplayController
がアクティブな場合、[キャンセル] ボタンが存在しないかのように表示されます (UISearchBar
がまだ にある場合のの状態のようにUITableView
)。
キャンセルボタンを機能させる方法についてのアイデアはありますか?