uiscrollview scrollViewWillBeginDragging портит высоту настраиваемых ячеек uitableview - PullRequest
0 голосов
/ 23 октября 2010

У меня есть панель поиска (с scopeBar), где я хочу закрыть клавиатуру, когда сервер возвращает соответствующие результаты. У меня есть следующий код:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    [search resignFirstResponder];

    //height - navBar - searchBar - carrierBar - uitabbar
    CGRect newFrame = CGRectMake(0, 44, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-44-44-20-49);
    homeTable.frame = newFrame;


}

и

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { 
    //[self.navigationController setNavigationBarHidden:YES animated:YES];

    searchBar.scopeButtonTitles = kScopeButtonTitles;
    searchBar.showsScopeBar = YES;  
    [searchBar sizeToFit];  

    [searchBar setShowsCancelButton:YES animated:YES];  

    //resize the table for the scope bar
    //uitabbar height is 49
    //uinavigationbar is 44
    //uisearchbar and scope is 44 each
    //UIkeyboard is 216
    //UITabBar is covered by UIKeyboard, so it doesn't have to be subtracted.
    //carrier status bar is 20

    CGRect newFrame = CGRectMake(0, 88, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-44-88-216-20);
    homeTable.frame = newFrame;

}  

Когда сервер возвращает данные, я звоню

[homeTable reloadData];

, после чего мой - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath называется - в 10 раз точнее.

Прокрутка стола приведет к смещению клавиатуры, но я заметил, что все высоты перепутаны. В отладчике я заметил, что

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

использует свежую ячейку, отличную от той, которая используется в heightForRowAtIndexPath каждый раз.

Это ошибка?

Я замечаю, что если я не вызову метод scrollViewWillBeginDragging, высота uitableviewcell будет хорошей, даже после перезагрузки таблицы.

Спасибо заранее.

1 Ответ

0 голосов
/ 23 октября 2010

фига.Я понял, что таблица вызывает searchBarTextDidEndEditing, после чего я делал там кое-какие дополнительные действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...