Подведение UITextField к вершине в UITableViewCell - PullRequest
0 голосов
/ 03 июня 2011

У меня есть UITextField в UITableViewCell.Когда я нажимаю на нее, клавиатура скрывает это.У меня есть попытки, но они не работают:

-(void) textFieldDidBeginEditing:(UITextField *)textField {
    [[self tableView] scrollRectToVisible:[textField frame] animated:YES];
}

Как можно избежать того, чтобы клавиатура скрывала текстовое поле, вызывая текстовое поле вверх?Спасибо

Ответы [ 4 ]

1 голос
/ 12 июля 2012
- (BOOL)textViewShouldBeginEditing:(UITextView *)textField
{
CGPoint pnt = [tblView convertPoint:textField.bounds.origin fromView:textField];
path = [[tblView indexPathForRowAtPoint:pnt] retain];
[tblView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
return YES;
}

Для возврата

 -(IBAction)Done:(id)sender
{
[tblView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
[tvDetail resignFirstResponder];

}

Необходимо установить для содержимого таблицы tableviw значение 200 в свойстве tableview в xib.

0 голосов
/ 03 июня 2011

Как и предполагал Баббиди, scrollToRowAtIndexPath:atScrollPosition:animated: - это хороший момент.Кроме того, вы можете изменить фрейм вашего tableView или его суперпредставления одновременно.Вы можете зарегистрироваться в центре уведомлений по умолчанию с помощью UIKeyboardWillHideNotification и UIKeyboardWillShowNotification и соответствующим образом организовать анимацию.

0 голосов
/ 03 июня 2011

Я решил эту проблему (используя другую логику) - с этим экран должен двигаться вверх, когда появляется клавиатура.

Реализуйте это.

-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 40; // or choose a number based on your cell height. 
}
0 голосов
/ 03 июня 2011

[textField frame] содержит расположение текстового поля внутри ячейки таблицы, а не внутри самой таблицы.Вам нужен способ для вычисления области, где находится textField в таблице, или может быть лучше использовать scrollToRowAtIndexPath:atScrollPosition:animated: вместо этого.(при настройке ячеек таблицы вы можете установить textField.tag=indexPath.row, чтобы сделать это проще).

Надеюсь, это поможет

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