Как да спра превъртането на tableView, когато се появи клавиатурата?

Имам UITableViewController, всяка от които съдържа клетки с UITextView, позициониран в горната част на всяка клетка. Естествено, когато започне взаимодействие с текстовото поле, ще се появи клавиатурата и в същото време цялата таблица също ще се превърти нагоре, докато клавиатурата се появява, което ще доведе до излизане на текстовото поле от изгледа.

Тъй като активирах страниране на моя tableView, така че след превъртане нагоре той ще се превърти отново надолу, така че текстовото поле да се вижда.

Бих искал да знам дали е възможно да деактивирам превъртането на таблицата, когато се появи клавиатурата и ако да, как?


person Kristoffer M Sanio    schedule 17.03.2014    source източник


Отговори (2)


Поведението на автоматичното превъртане се намира във функционалността UITableViewCONTROLLER. За да деактивирам автоматичното превъртане, намерих два начина:

1) използвайте вместо UITableViewController просто UIViewController - задайте източника на данни и делегирайте сами

2) Заменете viewWillAppear-Routine - и НЕ извиквайте [super viewWillAppear: animated] И с двете решения деактивирате не само Autoscroll, но и някои други хубави, но не

основни характеристики, които са описани в прегледа на препратката към класове на Apple: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html

person Irfan    schedule 17.03.2014
comment
Този отговор е взет от тук: stackoverflow.com/a/12010951/1751778 - person Avario; 11.12.2016
comment
използвам UITableViewController ако не използвам функцията supper.viewWillApper(), тогава моят колонтитул не идва в горната част на keyBoard какво трябва да направя за това Means i want to stop auto scrolling and want footer view on the top of keyboard while editing - person Pushpendra; 05.04.2017

можем да деактивираме превъртането на табличния изглед по няколко начина.

1) В методите за делегиране на textView

- (void)textViewDidBeginEditing:(UITextView *)textView{
           tableView.scrollEnabled = NO;
}


- (void)textViewDidEndEditing:(UITextView *)textView{
 tableView.scrollEnabled = YES;
}

2) Известия от клавиатурата

- (void)viewWillAppear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) 
                                             name:UIKeyboardWillShowNotification object:self.view.window];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) 
                                             name:UIKeyboardWillHideNotification object:self.view.window];
}

- (void)viewWillDisappear:(BOOL)animated {
    // unregister for keyboard notifications while not visible.
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];}

- (void)keyboardWillShow:(NSNotification *)notif {
    tableView.scrollEnabled = NO;
}

- (void)keyboardWillHide:(NSNotification *)notif {
    tableView.scrollEnabled = YES;
}
person Thukaram    schedule 17.03.2014
comment
не работи в swift ;( , някаква идея?! - person Mojtabye; 31.12.2015