获得UITableViewCell 在屏幕中的位置

原创 2016年06月01日 23:28:41

如果UITableView的每一个cell中都有一个textField,点击时弹起的键盘挡住了该cell,则应该将tableView弹起一定距离,以避免被遮挡:

1、获取cell在tableview中的位置。

CGRect rectInTable = [_tableView rectForRowAtIndexPath:indexPath];


2、将cell在tableView中的位置转化为在屏幕中的位置。

当tableView滑动的时候, label在屏幕中的位置会发生变化 应该怎样去计算cell在屏幕中的位置呢,毕竟键盘是相对屏幕的,不是相对tableVUew的。

- (CGRect)convertRect:(CGRect)rect toView:(nullableUIView *)view;


以下是完整的代码:

- (void) keyboardWillShow : (NSNotification*)notification {

    CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];

    NSIndexPath *indexPath = [NSIndexPathindexPathForRow:_firstResponderFieldIndexinSection:0];


    CGRect rectInTable = [_tableView rectForRowAtIndexPath:indexPath];

    CGRect rectInSelfview = [_tableView convertRect:rectInTable toView:self.view];

    CGFloat cellBottomY = rectInSelfview.origin.y + rectInSelfview.size.height;

    

    if (cellBottomY >  keyboardFrame.origin.y ) {   //键盘是否会挡住点击cell的判断

        CGFloat delta = _tableView.frame.origin.y - (cellBottomY - keyboardFrame.origin.y);

        _tableView.frame =CGRectMake(0, delta,SCREEN_WIDTH,_tableView.frame.size.height);

    }

}


注:_firstResponderFieldIndex就是点击的cell的tag

版权声明:本文为博主原创文章,转载请注明出处。

获取cell或者cell中的控件在屏幕中的位置

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rectInSuperview = [tabl...
  • ideaspress
  • ideaspress
  • 2015年07月22日 14:23
  • 4748

获取tableviewCell在当前屏幕中的坐标值

在使用 UITableViewCell  的frame属性获取origin得到的坐标是不变的. 也就是说如果UITableView初始化完毕后,每个cell的坐标是固定的,x不变,y 随in...
  • miemie1320
  • miemie1320
  • 2013年10月22日 18:15
  • 24311

获取tableviewCell在当前屏幕中的坐标值

在使用 UITableViewCell  的frame属性获取origin得到的坐标是不变的. 也就是说如果UITableView初始化完毕后,每个cell的坐标是固定的,x不变,y 随inde...
  • u010850094
  • u010850094
  • 2016年07月28日 17:46
  • 1482

获取屏幕上展示的UITableViewCell

NSArray *visiblePaths = [_tabelView indexPathsForVisibleRows]; for (NSIndexPath *indexPath in vi...
  • TianYou_Code
  • TianYou_Code
  • 2017年02月09日 16:30
  • 910

如何获得UITableViewCell 在屏幕中的位置

如何获得UITableViewCell 在屏幕中的位置
  • jueyi1127
  • jueyi1127
  • 2016年09月06日 10:05
  • 1999

UITableView移动cell位置(附在不同section之间切换的拓展)

UITableView在iOS开发中用处很广,当然其用法也是有些复杂的,特别是在设计UITableViewCell的时候,使用和处理cell是一个不小的挑战,对于cell位置的移动我们可以使用- (v...
  • abc649395594
  • abc649395594
  • 2015年03月18日 21:34
  • 3232

iOS判断UIView是否显示在屏幕上

头文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14...
  • shuqianwin
  • shuqianwin
  • 2016年09月05日 17:06
  • 734

获得UITableViewCell 在屏幕中的位置

如果UITableView的每一个cell中都有一个textField,我们想在点击textField时,如果弹起的键盘挡住了cell,就将cell弹起一定距离,我们知道通过可以得到每个cell在ta...
  • gx_wqm
  • gx_wqm
  • 2016年06月01日 23:28
  • 1337

获取tableView(UICollectionViewCell)中cell相对于(UICollectionView)tableView.superView的区域坐标(位置)

在tableview上有这个方法 CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rectI...
  • www9500net_
  • www9500net_
  • 2016年09月05日 10:20
  • 3400

Android~获取view在屏幕中的位置

http://androidbin.iteye.com/blog/1633966 我们重点在获取view的y坐标,你懂的... 依次介绍以下四个方法:   1.getLocationIn...
  • iloveaman
  • iloveaman
  • 2013年12月09日 11:35
  • 3476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获得UITableViewCell 在屏幕中的位置
举报原因:
原因补充:

(最多只允许输入30个字)