Прокрутить пользовательский UITableViewCell вправо над клавиатурой? - PullRequest
3 голосов
/ 28 февраля 2012

В настоящее время у меня есть UITableView с пользовательскими ячейками, и в каждой ячейке есть UITextField, проблема в том, что иногда UITextField покрывается UIKeyboard.

Итак, сейчас у меня есть координата Y для UIKeyboard, и мой UITableView правильно работает с ячейками.

Итак, как я могу использовать эту координату Y (с плавающей точкой), чтобы прокрутить мой UITableView до этой координаты Y плюс высота ячейки, чтобы получить ее прямо над моей UIKeyboard?

Кроме того, когда клавиатура скрывается, как мне вернуть UITableView в его нормальное положение, в котором он находился?

Любой совет будет оценен!

Спасибо!

CustomCell *cell = (CustomCell*)[[thetextField superview] superview];
    CGRect cellRect = [cell convertRect:cell.frame toView:self.view];
    float bottomCell = cellRect.origin.y - cellRect.size.height;
    if (bottomCell >= keyboardY) {
        NSIndexPath *indexPath = [thetableView indexPathForCell:cell];
        [thetableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    }

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Один или другой из UITableView

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

Я предполагаю, что контроль не входит в оператор if. Подумайте о том, чтобы пропустить проверку Y-координаты в пользу простой прокрутки табличного представления независимо от того, где оно находится.

CustomCell *cell = (CustomCell *)[[theTextField superview] superview];
NSIndexPath *indexPath = [theTableView indexPathForCell:cell];
[theTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

ОК, если вы уверены, что он вызывается, убедитесь, что ваш indexPath не равен nil, что может произойти, если ячейка отсутствует в tableView или если она не ячейка.

0 голосов
/ 14 февраля 2013

UITableView настраивается каждый раз, когда отображается клавиатура.

Однако этого не произойдет, если вы не установили UITableViewCellSelectionStyle вашей пользовательской ячейки на UITableViewCellSelectionStyleNone.

Я решил с помощью кода ниже.

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
...