UITextField的位置参考其7个superview

时间:2014-02-05 13:13:32

标签: ios iphone objective-c uitableview scrollview

我有一个文本字段,其层次结构为

  

self.view-> Tableview-> contentview-> anotherview-> myTextField将

我想通过self.view获取MyTextField的y位置。

我的要求:

每当我点击文本字段时,我打开键盘,如果文本字段位于我的键盘下(我将通过比较MyTextField的框架与self.view的引用来检查),那么我将更改我的单元格的框架(如果MyTextField不在我的键盘下面),那么我不需要更改框架。

我正在尝试使用以下方法,但不知道如何准确地实现它。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{

    UIView *aView = textField.superview.superview.superview.superview.superview.superview.superview;
    NSLog(@"%@",[aView class]);
    CGRect textFieldRect = [textField  convertRect:textField.frame fromView:aView];
    NSLog(@"View: %@",NSStringFromCGRect(textFieldRect));
    return YES;
} 

2 个答案:

答案 0 :(得分:0)

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    CGPoint pt;
    CGRect rc = [textField bounds];
    rc = [textField convertRect:rc toView:tableView];
    pt = rc.origin;
    pt.x = 0;
    pt.y -= (165 + ([UI isIPhone5] ? 80 : 0));
    [tableView setContentOffset:pt animated:YES];

  return YES;
}

简单地这样做....因为表视图也是一个scrollview。然后我从叠加流量学习这个,但现在我不知道链接

答案 1 :(得分:0)

只需在 keyBoard 上方设置tableview框架,即可在表格视图中轻松找到当前textField单元格,更改表格视图 contentoffset ,用于textFieldShouldBeginEditing

中的选定单元格
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
  // set table view frame
  UITableViewCell *cell = (UITableViewCell *)textField.superview.superview.superview;
  NSIndexPath *indexPath = [self.filterTableView indexPathForCell:cell];
  [tableView scrollToRowAtIndexPath:selectedIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
 return YES;

}

注意:重置textFieldShouldEndEditing中的表格视图高度