6

プログラムで検索バーを作成し、以下のコードを使用してビューに追加しました。

- (void)viewDidLoad
{
    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xPositionForSearchBar, yPositionForSearchBar, widthForSearchBar, heightForSearchBar)];
        UIView *bg = [[searchBar subviews] objectAtIndex:0];
        searchBar.delegate = self;
        searchBar.placeholder = @"Search record";
        for(UIView *view in searchBar.subviews){
            if([view isKindOfClass:[UITextField class]]){
                UITextField *tf = (UITextField *)view;
                tf.delegate = self;
                break;
            }
        }
        [bg removeFromSuperview];
        [self.view addSubview: searchBar];
}

コードは UISearchBarDelegate と UITextFieldDelegate で実装されています。

使ってみました

- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar
{
    NSLog(@"cancel clicked");
    searchBar.text = @"";
    [aSearchBar resignFirstResponder];
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    NSLog(@"clear");
    [self performSelector:@selector(searchBarCancelButtonClicked:) withObject:searchBar afterDelay: 0.1];
    return YES;
}

それでも、「クリアボタン」をクリックしても、searchBar内のテキストはまったくクリアされません-「X」が内側にある円。

IBで実装すると、クリアボタンが機能します。なぜだろう?

親切なアドバイス、どうもありがとう。

4

2 に答える 2

0

あなたのコードをチェックしましたが、デバイスでもシミュレータでも問題なく動作します。

于 2012-09-28T05:42:24.880 に答える