检查UITextField是否可见但在键盘后面

时间:2014-08-05 12:18:03

标签: ios uitableview keyboard uitextfield show-hide

解决方法:

UIViewController  包含UITableview自定义单元格。每个单元格都包含带UIView的cusom UITextField

我们都知道,可以管理UITextField个代表并向上/向下显示UIView以显示键盘出现时不可见的UITextField

问题:

此处UITableView的内容是动态的,其决定的运行时间是哪个单元格包含UITextField。 我为键盘上/下视图尝试了很多解决方案。但仍然存在一些问题。

所以现在决定只为那些没有出现在屏幕上或键盘后面的UITextField进行翻译。

有没有办法知道这一点  键盘外观的响应者UITextField是在键盘后面还是在键盘上方?

有更好的方法吗?

如果问题不清楚,请添加评论。

2 个答案:

答案 0 :(得分:1)

根据当前的textField frame y位置,你可以检查它是否在键盘后面或不使用

-(void)textFieldDidBeginEditing:(UITextField *)textField {

    CGPoint textFieldPosition = [textField convertPoint:CGPointZero toView:self.tableView];
}

现在检查y值并根据y值移动你的UIVIe ..

答案 1 :(得分:1)

当键盘可见时,您可以重新构建tableView,而不是检查所有这些。

viewDidLoad()中添加此

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow) name:UIKeyboardDidShowNotification object:nil];

在接收器中设置新帧

 - (void)keyboardShow{
        [tableView setFrame:newFrame]
    }

再次在name:UIKeyboardDidHideNotification当键盘不存在时重置为初始帧