UITableView прокручивает в неправильную позицию - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть UITableView, и я вставил много ячеек. Каждая ячейка содержит UITextField. Я хотел бы прокрутить автоматически до сфокусированного UITextField. Но если я удаляю ячейку, UITableView не может прокрутить до нужного UITextField, клавиатура перекрывает сфокусированный UITextField

    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self registerForKeyboardNotifications];
    cellArray = [[NSMutableArray alloc] initWithObjects:_cell0, _cell1, _cell2, _cell3, _cell4, _cell5, _cell6, _cell7, _cell8, _cell9, _cell10, _cell11, _cell12, _cell13, _cell14, _cell15, nil];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [cellArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    return [cellArray objectAtIndex:indexPath.row];
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField == _input0) {
        [cellArray removeObject:_cell1];
        [_tableView reloadData];
    }
        activeField = textField;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    activeField = nil;

}

- (void)registerForKeyboardNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

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

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height+100, 0.0);

    _tableView.contentInset = contentInsets;
    _tableView.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) ) {
        [_tableView scrollRectToVisible:activeField.frame animated:YES];
    }
}

- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
     UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    _tableView.contentInset = contentInsets;
    _tableView.scrollIndicatorInsets = contentInsets;
}```

1 Ответ

0 голосов
/ 21 февраля 2020

// удаляем строку в пути индекса [m_tableView deleteRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationFade];

// вставляем строку в пути индекса [m_tableView insertRowsAtIndexPaths: @ [m_indeableAath] с: m_indexAp:] с: UN: анимация_Процесса]: 1003 *

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