4

私は何時間も解決策を見つけようとしてきましたが、残念ながらサイコロはありません... UISearchBar を純粋にプログラムで実装しようとしました (xib もインターフェイスビルダーもありません)。

これが私の.hヘッダーです:

@interface RLCASearchMasterViewController : UIViewController<UISearchBarDelegate>

@property (strong, nonatomic) RLCAGUIElements *gui;
@property (strong, nonatomic) RLCAUITableView *table;
@property (strong, nonatomic) UISearchBar *searchBar;

@end

と私の .m 実装:

@synthesize searchBar;

- (void)loadView
{

[super loadView];

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)];
searchBar.delegate = self;
[self.view addSubview:searchBar];  

}

私はこれを何回行ったかわかりませんが、何が間違っているのかわかりません... UISearchBar はビューに追加され、正しいサイズとすべてが表示されますが、クリック/タップすると、キーボードが出ない。ただし、次のことを呼び起こす場合:

[searchBar becomeFirstResponder];

キーボードは表示されるので、おそらく委任ではなく、実際にクリックされたかどうかを検出しています...ただし、ロード時に編集したくなく、リクエストによってのみ...

助けてください。ありがとう!:)

敬具、ピョートル。

4

3 に答える 3

8

さて、私はそれを働かせました。

動作しますが、理由がわかりません。誰かが洞察力を持っているなら、私は非常に感謝しています...

そう:

私は置き換えました:

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,         self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)];
searchBar.delegate = self;
[self.view addSubview:searchBar]; 

と:

searchBar = [[UISearchBar alloc] init];
searchBar.delegate = self;
[searchBar sizeToFit];
[self.view addSubview:searchBar];

...そして、ヴィオラ!;)

ただし、すべての回答に感謝します。前述のように、これが機能する理由と機能の説明をいただければ幸いです。

ごきげんよう、ピョートル。

于 2012-06-08T09:18:35.937 に答える
2
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,         self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.

独自の init メソッドで使用するために searchBars フレームにアクセスしないでください。その時点ではまだ開始されていないため、0になり、高さのない四角形、またはmakeRectが完全に失敗したためにNSZeroRectになる可能性があると思います

それが問題だと思います。

于 2012-06-08T09:59:59.477 に答える
0

そのデリゲート メソッドを定義してみて、searchBarShouldBeginEditing メソッドに最初のレスポンダーになるメソッドを入れてください。それでも機能しない場合は、このビューの上に他のビューがないかどうかを確認してください。このようにして、タッチをオーバーライドします。

于 2012-06-08T07:56:47.193 に答える