2015-04-28 1 views
2

Как видите, моя прокрутка UITableView максимальная, но моя таблица не полностью видна. Зачем? Я использую UITableViewControllerUISearchController не перемещает мой UITableView вверх

enter image description here

+1

набор это, как только появится клавиатура 'tableView.contentInset = UIEdgeInsetsMake (10, 0, 200, 0);' и после клавиатуры (0, 0, 0, 0); ' –

+0

Знаете ли вы, как получить высоту клавиатуры? Потому что высота отличается для обеих ориентаций. Без использования уведомлений? Возможно ли использовать текущую видимую клавиатуру? –

ответ

0

с помощью уведомлений может быть самый простой способ, чтобы получить высоту клавиатуры, как я откомментировал установить contentInset свойство для прокрутки TableView над клавиатурой, когда он скрывает набор к нулю насекомых,

- (void)viewWillAppear:(BOOL)animate { 
    [super viewWillAppear:animate]; 
    // Do any additional setup after loading the view. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(keyboardShown:) 
        name:UIKeyboardWillShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(keyboardHidden:) 
        name:UIKeyboardWillHideNotification object:nil]; 
    } 

- (void)viewWillDisappear:(BOOL)animated 
    { 
     //remove notifications 
    } 

- (void)keyboardShown:(NSNotification*)aNotification 
    { 
    NSDictionary* info = [aNotification userInfo]; 
    CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 

    float height = keyboardRect.size.height; 
    tableView.contentInset = UIEdgeInsetsMake(10, 0, height, 0); 
    } 


    - (void)keyboardHidden:(NSNotification*)aNotification 
    { 
     [UIView animateWithDuration:0.2 animations:^{ 
     table.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); 
     }]; 
    } 
1

Я рекомендую просто скрыть клавиатуру, как только пользователь начнет прокрутку. Apple реализует это поведение в своих приложениях. Чтобы сделать это, добавьте в вашем контроллере представления таблицы:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    [self.searchBar resignFirstResponder]; 
} 

Это требует searchBar свойства, которое заполняется строкой поиска.

4

Хорошая альтернатива для ответа Ortwin является использование keyboardDismissMode свойство UIScrollView:

tableView.keyboardDismissMode = .OnDrag