2014-09-13 9 views
1

У меня есть текстовое поле в TableView, и когда пользователь выбирает переключатель, он появляется (становится видимым) и появляется клавиатура, а когда пользователь выключает коммутатор, TextBox исчезает и клавиатура скрывает. В то время, когда клавиатура появляется и исчезает, я хочу немного сдвинуть таблицуView вверх, а затем вернуться в исходное положение. Вот кодContentInsets не работает для UITableView

-(IBAction)actionSwitch:(id)sender 
{ 
isSearchTerm = [switchSearchTerm isOn]; 
[self.tableView reloadData]; 
if(isSearchTerm == YES) 
{ 
    [txtSearchTerm becomeFirstResponder]; 
    floatBottom = self.tableView.contentInset.bottom; 

    self.tableView.contentInset=UIEdgeInsetsMake(0,0,200,0); 
    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForSelectedRow] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 
else 
{ 
    [txtSearchTerm resignFirstResponder]; 
    self.tableView.contentInset=UIEdgeInsetsMake(0,0,floatBottom,0); 
    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForSelectedRow] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
} 
} 

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

ответ

1

Я решил это, установив расширение под верхним барным свойством НЕТ, в свойствах контроллеров объектов в окне Инспектор свойств, выбрав ViewController.

2

Если ваш TableView находится в контроллере навигации или корневом контроллере навигационного контроллера, и вы делаете все это на iOS7 + с UIViewController. Свойство automaticallyAdjustsScrollViewInsets установлено в YES. Лучше обращаться с клавиатурой, если предлагаемый документ

// Call this method somewhere in your view controller setup code. 
- (void)registerForKeyboardNotifications 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(keyboardWasShown:) 
      name:UIKeyboardDidShowNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(keyboardWillBeHidden:) 
      name:UIKeyboardWillHideNotification object:nil]; 

} 

// Called when the UIKeyboardDidShowNotification is sent. 
- (void)keyboardWasShown:(NSNotification*)aNotification 
{ 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    // If active text field is hidden by keyboard, scroll it so it's visible 
    // Your app might not need or want this behavior. 
    CGRect aRect = self.view.frame; 
    aRect.size.height -= kbSize.height; 
    if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 
     [self.scrollView scrollRectToVisible:activeField.frame animated:YES]; 
    } 
} 

// Called when the UIKeyboardWillHideNotification is sent 
- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
{ 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 
} 

Существует еще один способ сделать это. Оба можно найти в разделе «Перемещение содержимого, находящегося под клавиатурой» «Руководство по программированию текста для iOS»

+0

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

+0

решил это, отключив расширение в верхнем баре в свойствах ViewControllers. В любом случае спасибо –