关闭

获得UITableViewCell 在屏幕中的位置

901人阅读 评论(0) 收藏 举报
分类:

如果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

0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:87544次
    • 积分:2251
    • 等级:
    • 排名:第16675名
    • 原创:134篇
    • 转载:52篇
    • 译文:0篇
    • 评论:11条
    最新评论