uisearchbarとuitableを備えたシンプルなビューコントローラーがあります。私の問題は、検索バーがタップされたときに、デリゲート関数searchBarShouldBeginEditingが呼び出されているのにsearchBarTextDidBeginEditingが呼び出されていないことです(そのため、キーボードが開かれておらず、検索が編集できないため)
YES を返すデリゲート関数searchBarShouldBeginEditingを実装しようとしました。searchbar をファーストレスポンダとして設定しましたが、searchBarTextDidBeginEditingを呼び出す方法がありません...
何が起こっているのでしょうか??
いくつかのコード:
controller.h
@interface ViewController : UIViewController <UISearchBarDelegate>
{
UISearchBar * searchbar;
}
@property (nonatomic, retain) IBOutlet UISearchBar* searchbar;
@end
コントローラー.m
@synthesize searchbar;
- (BOOL)respondsToSelector:(SEL)sel {
NSLog(@"Queried about %@", NSStringFromSelector(sel));
return [super respondsToSelector:sel];
}
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
NSLog(@"searchBarShouldBeginEditing -Are we getting here??");
return YES;
}
-(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
NSLog(@"searchBarTextDidBeginEditing -Are we getting here??");
}
もちろん、私のクラスにはもっと多くのコードがあります(それは確かに何らかの形で検索バーに影響を与えています)が、誰かが検索バーで同様の問題を抱えている場合、その応答は非常に高く評価されます;)
検索バーだけで簡単なアプリケーションを作成しようとしましたが、明らかに機能します...
編集:
少しテストしたところ、同じ結果を得る TextField を追加したため、uisearchbar に関連するものではないことがわかりました (textFieldShouldStartEditing デリゲート関数が呼び出されただけです)。
アプリケーションには UITabBar コトローラー内にすべてのビュー コントローラーがありますが、これがすべての混乱を引き起こす可能性はないと思います...
編集2:
本当に奇妙な動作: IBAction 関数を UITextfield の TouchDown イベントに設定すると完全に機能しますが、IBAction 関数を EditingDidBegin に設定すると起動されません...
なぜこのイベントを呼び出せなかったのですか??