当用户开始编辑其中一个单元格中显示的UITextField时,我无法向上滚动tableView。
我的问题是我无法找到一种方法来了解视图中UITextField的位置。如果我尝试使用activeTextField.frame.origin.y,我会在单元格中获取TextField的位置,但不会在tableView内部。
我构建视图的方式如下: 我有一个TableViewController,它使用初始化UITextField的自定义类创建单元格。然后我的TableViewController将UITextField委托设置为自身,因此我可以触发textFieldDidBeginEditing事件。但是如果我尝试NSLog的TextField的y原点,我总是为每个UITextField获得相同的值,这是它在单元格中的位置。
关于如何解决这个问题的任何想法?
答案 0 :(得分:5)
这些坐标系变化总是令人困惑......
这应该可以帮助您了解表格视图坐标系中的要点:
CGPoint textFieldCenter = textField.center;
CGPoint pointInTableView = [tableView convertPoint:textFieldCenter fromView:textField.superview];
如果您想在不同的视图中使用它,则应将tableView替换为您想要具有坐标的视图。
如果您想获取表格中的单元格,则textField位于:
NSIndexPath* path = [tableView indexPathForRowAtPoint:pointInTableView];
UITableViewCell* cell = [tableView cellForRowAtIndexPath:path];
答案 1 :(得分:2)
要获取文本字段的位置,请使用UIView方法convertRect:toView:
convertRect:toView:从接收器转换矩形 坐标系到另一个视图。
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view
示例:
CGRect textFieldFrame = [self.tableview convertRect:yourTextField.frame toView:self.view];
答案 2 :(得分:1)
答案 3 :(得分:0)
是的,请尝试使用此方法:
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
当您提示键盘时,将tableView滚动到所选单元格,它应将单元格置于屏幕顶部。
答案 4 :(得分:0)
试试这个
CGPoint locationinView=[cellView convertPoint:location fromView:tableView];
这里location是cellView中textField的点。