调整UITableView以显示隐藏UIKeyboard的最简单方法

时间:2011-11-09 22:54:55

标签: ios uitableview uikeyboard

我有UITableViewUITableViewCell个。{每个单元格包含UITextfield。点击textField会导致键盘显示。不幸的是,键盘覆盖了iPhone屏幕上较低的一些单元格。

显示键盘时滚动tableView的最简单方法是什么?

我已经尝试了contentOffset。这适用于实际滚动tableView。但是我无法确定哪个单元格是“活动的”(有一个textField,它当前是第一个响应者)。我的应用程序支持纵向和横向,因此有时需要在设备旋转时滚动tableView。

2 个答案:

答案 0 :(得分:2)

跟踪哪个textField当前处于活动状态的一种简单方法是将其tag属性设置为cellForRowAtIndexPath:上的indexPath行

另一种方法是使用这一行:

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[textField convertPoint:textField.frame.origin toView:self.tableView]];

textFieldShouldBeginEditing:上,当textField变为活动时,或者在设备旋转时的旋转回调中,然后使用scrollToRowAtIndexPath:atScrollPosition:animated:

滚动tableView

答案 1 :(得分:1)

我正在编写一个有类似问题的应用。我正在处理跟踪第一个响应者或活动UITextField的方式是使用回调。我使用UIControlEvent UIControlEventEditingDidBegin 调用方法。

我在哪里设置UITextField:

[self.nameUnitNumberField addTarget:self.textFieldDelegate action:@selector(handleEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin];

然后在委托类中,我设置了当前的文本字段:

- (void)handleEditingDidBegin:(id)sender
{
    self.currentNameField = (UITextField *)sender;
}

这似乎运作良好。它还避免使用标签。我听说它有潜在的问题,最好在不需要的时候避免它。

拥有活动的UITextField后,您可以使用contentInset和scrollToRowAtIndex:如下所述:Get UITableView to scroll to the selected UITextField and Avoid Being Hidden by Keyboard

或只是在键盘在屏幕上时调整表格视图的大小。这是最简单的方法。