0

我有一个 TableVieController ,其 searchBar 位于self.tableView.tableHeaderView。当屏幕旋转时,我只是将框架设置为新的 CGRect。视图看起来不错,但不幸的是一半的搜索栏不可点击,取消按钮也不可点击。

那么我该如何进行这项工作呢?我只能通过创建搜索栏的新实例并分配它来做到这一点,但这不是正确的方法,对吧?

const CGRect CGRECT_TABLE_VIEW_PORTRAIT = { { 0.0f, 0.0f }, { 320.0f, 365.0f } };
const CGRect CGRECT_TABLE_VIEW_LANDSCAPE = { { 0.0f, 0.0f }, { 480.0f, 150.0f } };


- (void)viewDidLoad
{
... 
        // create search bar
        searchBar = [[UISearchBar alloc] initWithFrame:self.tableView.bounds];
        [searchBar setTintColor:RGB(168, 212, 255)] ;    
        searchBar.showsCancelButton = YES;
        [searchBar sizeToFit]; // Get the default height for a search bar.
        searchBar.delegate = self;

        self.tableView.tableHeaderView = searchBar;
        self.tableView.frame = CGRECT_TABLE_VIEW_PORTRAIT;
}


- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {

        if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
              tableView.frame = CGRECT_TABLE_VIEW_LANDSCAPE;
        } else {
              tableView.frame = CGRECT_TABLE_VIEW_LANDSCAPE;
        }
}
4

1 回答 1

0

我不知道你为什么要尝试处理旋转,这应该自动发生。这段代码提供了一个搜索栏,可以在旋转时自行调整:

- (void)viewDidLoad {
    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:self.tableView.bounds];
    [searchBar setTintColor:[UIColor colorWithRed:168/255 green:212/255 blue:1 alpha:1]];
    searchBar.showsCancelButton = YES;
    [searchBar sizeToFit]; // Get the default height for a search bar.
    searchBar.delegate = self;
    self.tableView.tableHeaderView = searchBar;
}
于 2013-01-27T17:14:42.590 回答