繁体   English   中英

UITextField相对于其7超级视图的位置

[英]Position of UITextField with reference to its 7 superview

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

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;
} 
-(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;
}

就像这样...。因为表视图也是滚动视图。 然后我仅从堆栈溢出中学习此方法,但现在我不知道链接

只需在keyBoard上方设置tableview框架,就可以轻松地在表视图中找到当前的textField单元 ,更改textFieldShouldBeginEditing所选单元格的表视图contentoffset

- (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中重置表格视图的高度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM