У меня есть UITextField, который скрывается клавиатурой при выборе. Как это можно представить? - PullRequest
0 голосов
/ 12 июня 2011

У меня есть UITableView, которое короче окна, поэтому прокручивать его не нужно.Однако длина равна , поэтому при выделении текстового поля в нижнем ряду клавиатура закрывает его.

Я не могу использовать scrollToRowAtIndexPath, поскольку таблица корочеокно, так что мне было интересно, каким будет правильный способ показать это.

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

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

Вы должны реализовать эти методы в соответствующем классе:

- (void) textFieldDidBeginEditing:(UITextField *)myTextField
{
    [self animateTextField:myTextField up:YES];
}

- (void) textFieldDidEndEditing:(UITextField *)myTextField
{
    [self animateTextField:myTextField up:NO];
}

- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
    int movement = (up ? -105 : 105);

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.3f];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

Вы должны адаптировать значения (-105, 105 и 0.3f) к вашей ситуации.

1 голос
/ 12 июня 2011

Вы можете сдвинуть весь tableView вверх, установив высоту footerView.Клавиатура переместит таблицу выше для высоты нижнего колонтитула

-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 70.0;
}
0 голосов
/ 20 января 2013

Код Пьера работал для меня, но я удалил аргумент myTextField. Это казалось ненужным. Я также изменил это на UITextViews, потому что это то, что я имел в своем коде. В противном случае, спасибо за вопрос и ответы. Я бился головой о стену, чтобы решить эту проблему!

#pragma mark - Text View Delegate

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    [self animateTextViewUp:YES];
}

- (void) textViewDidEndEditing:(UITextView *)textView
{
    [self animateTextViewUp:NO];
}

- (void) animateTextViewUp:(BOOL)up
{
    int movement = (up ? -80 :80);

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.3f];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...