的UISearchBar。无法改变框架

时间:2014-01-09 16:36:31

标签: ios objective-c uisearchbar

我的应用程序中有UISearchBar。我将其设置为表头视图。当文本开始编辑时,我想将搜索栏设置为viewController的子视图。搜索栏正确添加到viewController的视图,但它的帧不正确。这是我的代码:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
   UITableView *tableView = ((UITableView *)[((SectionViewController *)sharedInstance.currentViewController).view viewWithTag:1111]);
    [tableView reloadData];

    if([searchBar.text isEqualToString:@"Filter..."])
    {
        searchBar.text = @"";
        for(UIView *subView in searchBar.subviews){
            if([subView isKindOfClass:UITextField.class]){
                [(UITextField*)subView setTextColor:[UIColor blackColor]];
            }
        }
    }
    [((SectionViewController *)sharedInstance.currentViewController).view addSubview:searchBar];
    [searchBar setFrame:CGRectMake(0, 20, 320, 38)];

    [((SectionViewController *)sharedInstance.currentViewController).navigationController setNavigationBarHidden:YES animated:YES];
    [searchBar setShowsCancelButton:YES animated:YES];
}

我想设置帧(0,20,320,38),但我得到(0,0,320,38)。此外,searchBar的初始帧是(0,0,320,38)。请告诉我为什么我会这样做?

3 个答案:

答案 0 :(得分:2)

UISearchBar很奇怪。你不能自由设置它的框架。这是由于内部实施。

答案 1 :(得分:0)

我将这样的UISearchBar添加到我的ViewController,它是从UITableViewController派生的:

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,self.tableView.frame.size.width,44)];
searchBar.placeholder = @"Search for Groups";
searchBar.delegate = self;
self.searchController = [[UISearchDisplayController alloc]
        initWithSearchBar:searchBar
       contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;

答案 2 :(得分:0)

视图不能同时出现在两个地方。您不能将相同的搜索栏作为子视图添加到视图控制器的视图中,同时它是表视图的标题。为什么不建立不同的搜索栏?