6

uisearchbaruitableを備えたシンプルなビューコントローラーがあります。私の問題は、検索バーがタップされたときに、デリゲート関数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 に設定すると起動されません...

なぜこのイベントを呼び出せなかったのですか??

4

3 に答える 3

13

デリゲートプロパティを設定しましたか?

searchbar.delegate = self;
于 2011-11-04T10:15:16.570 に答える