1

さて、左側に UIButton を備えた UISearchbar が必要でした。検索を行ったところ、両方の項目を UIToolbar に追加し、それをテーブルビューのヘッダー ビューに追加するのが最善の方法であることがわかりました。そこで、問題はありませんでしたが、ユーザーが入力を開始したときにツールバーにも[キャンセル]ボタンを表示したかったので、もう一度検索して、それを機能させるためにそれを見つけましたUISearchbar は UIView にネストする必要があり、それが私の問題が発生している場所です。アイテムを追加する順序が原因なのか、アイテムを追加する順序が原因なのかはわかりませんが、ビューの背景色または他のものの背景色が干渉していますツールバー。下のスクリーンショットを見ると、UIToolBar の背景色 (darkGrayColor を使用しているだけ) は正しく表示されていますが、SearchBar の色が濃くなっています。保持ビューの背景を clearColor に設定しようとしましたが、SearchBar の背景色も clearColor に設定しようとしましたが、これまでのところ、UISearchBar を私が持っている UIBarButton と一致させることができないようです。以下は、SearchBar/ToolBar を設定するためのコードです。

ツールバーのスクリーンショット

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

if (section == 0) {
    //Create the SearchBar
    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 280, 44)];
    searchBar.placeholder = @"Search for Client";
    searchBar.delegate = self;
    searchBar.tag = kSearchBarTag;
    //Create view to wrap search bar in
    UIView *barWrapper = [UIView new];
    barWrapper.frame = searchBar.bounds;
    barWrapper.backgroundColor = [UIColor clearColor];
    [barWrapper addSubview:searchBar];
    UIBarButtonItem  *searchBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
    //Create the Sort Button
    UIBarButtonItem *sortButton = [UIBarButtonItem new];
    [sortButton setImage:[UIImage imageNamed:iconSort]];
    [sortButton setTarget:self];
    [sortButton setAction:@selector(SortButtonPressed:)];
    //Create the ToolBar
    UIToolbar  *searchToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0,0,tableView.bounds.size.width,44)];
    searchToolbar.backgroundColor = [UIColor darkGrayColor];
        [searchToolbar setItems:[NSArray arrayWithObjects:sortButton,searchBarButtonItem, nil] animated:YES];

        return searchToolbar;
    }
    return nil;
}

#pragma mark - SearchBar Delegate
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {

    searchBar.showsCancelButton = YES;
    return TRUE;
}

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {

    searchBar.showsCancelButton = NO;
    [searchBar resignFirstResponder];
}
4

1 に答える 1

1

検索スタイルを最小に設定すると、灰色の背景が消えます。

インターフェイスビルダー

属性インスペクターを開き、最小限を選択します

インターフェイスビルダーで最小限の検索スタイル

Objective-C コード

searchBar.barStyle = UISearchBarStyleMinimal;
于 2014-09-25T09:04:33.067 に答える