1

UIsearchBar をナビゲーション コントローラーに追加しようとしています。また、UISearchBarのキャンセルボタンも使いたいです。

UISearchBar* searchBar = [[UISearchBar alloc] init];
searchBar.frame = CGRectMake(0, 0, 300, searchBar.frame.size.height);
searchBar.translucent = NO;
searchBar.barStyle = UIBarStyleBlack;
searchBar.delegate = self;
UIView* myView = [[UIView alloc] initWithFrame:searchBar.frame];
[myView addSubview:searchBar];
UIBarButtonItem* sbItem = [[UIBarButtonItem alloc] initWithCustomView:myView];    
[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:chart,sbItem,nil]];

searchBarが非アクティブであるというトラブル。ナビゲーションコントローラーに表示されます。しかし、タップしてもまったく反応しません。キャンセルボタンを表示すると表示されますが、クリックできません。

UIView で UIsearchBar をラップしない場合、キャンセル ボタンを表示したくない場合を除いて、正常に動作します。

UPD IF i call

[searchBar becomeFirstResponder]

編集モードになり、キャンセル ボタンとキーボードが表示されますが、searchBar がラップされたビューがフレーム パラメータを変更し、元の外観から 10px 下に移動するように見えます。背景を trnsparent から blackopaque に変更します

ある種のブードゥー教のように見えます...とても単純なアクションにはとても時間がかかります...

4

1 に答える 1

2

検索バーのフレームを間違えたと思います。検索バーの高さを searchBar.frame.size.height としましたが、その時点では高さがありませんでした。次のように変更してください。

UISearchBar* searchBar = [[UISearchBar alloc] init];
searchBar.frame = CGRectMake(0, 0, 300, 40);
searchBar.translucent = NO;
searchBar.barStyle = UIBarStyleBlack;
searchBar.delegate = self;
UIView* myView = [[UIView alloc] initWithFrame:searchBar.frame];
[myView addSubview:searchBar];
UIBarButtonItem* sbItem = [[UIBarButtonItem alloc] initWithCustomView:myView];    
[self.navigationItem setRightBarButtonItems:[NSArray  arrayWithObjects:chart,sbItem,nil]];

申し訳ありませんが、ここにあるチャートが何なのかわかりません。あなたが探しているものであることを願っています。

于 2012-11-03T12:06:13.383 に答える