Получить позицию элемента - PullRequest
1 голос
/ 06 марта 2012

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

Моя проблема заключается в том, что я не могу найти способ узнать положениеUITextField в представлении.Если я попытаюсь сделать activeTextField.frame.origin.y, я получу положение TextField внутри ячейки, но не внутри tableView.

Способ построения представления следующий:TableViewController, который создает ячейки, используя пользовательский класс, который инициализирует UITextField.Затем мой TableViewController установил для себя делегата UITextField, чтобы я мог вызвать событие textFieldDidBeginEditing.Но если я попытаюсь выполнить NSLog для y источника TextField, я всегда получаю одно и то же значение для каждого UITextField, которое является его позицией в ячейке.

Любая идея о том, как я могу решить эту проблему?

Ответы [ 5 ]

5 голосов
/ 06 марта 2012

Это всегда путает с этими изменениями системы координат ...

Это должно работать, чтобы получить точку в системе координат представления таблицы:

CGPoint textFieldCenter = textField.center;
CGPoint pointInTableView = [tableView convertPoint:textFieldCenter fromView:textField.superview];

Если вы хотите получить еев другом представлении вы должны заменить tableView видом, в котором вы хотите получить координату.

И если вы хотите получить ячейку в таблице, в которой находилось textField:

NSIndexPath* path = [tableView indexPathForRowAtPoint:pointInTableView];
UITableViewCell* cell = [tableView cellForRowAtIndexPath:path];
2 голосов
/ 06 марта 2012

Для получения позиции вашего текстового поля следует использовать метод UIView convertRect: toView:

convertRect: toView: преобразует прямоугольник из получателя система координат с другой точки зрения.

  • (CGRect) convertRect: (CGRect) rect toView: (UIView *) представление

пример:

CGRect textFieldFrame = [self.tableview convertRect:yourTextField.frame toView:self.view];
1 голос
/ 06 марта 2012
0 голосов
/ 06 марта 2012

попробуйте

CGPoint locationinView=[cellView convertPoint:location fromView:tableView];

здесь местоположение - это точка textField в cellView.

0 голосов
/ 06 марта 2012

Да, попробуйте использовать этот метод:

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

Когда вы предлагаете клавиатуру, прокрутите tableView к выбранной ячейке, она должна вывести ячейку в верхнюю часть экрана.

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