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

问题描述:

我有一个UITableView与几个UITableViewCell s。每个单元格包含一个UITextfield。点击textFields会导致键盘显示。不幸的是,键盘覆盖了iPhone屏幕上较低的一些单元。最简单的方法来调整UITableView显示隐藏UIKeyboard

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

我试验了contentOffset。这适用于实际滚动tableView。然而,我很难确定哪个单元格是“活动的”(有一个textField,它是当前的第一个响应器)。我的应用程序支持纵向和横向,所以有时需要在设备旋转时滚动tableView。

+0

您不能使用cellForRowAtIndexPath方法来确定您需要哪个单元格以及哪些单元格可以从文本字段中移除? – Mellson

一个简单的方法来跟踪它的文本框是当前活动的设置其tag属性为indexPath的行上cellForRowAtIndexPath:

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

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

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

我正在编写一个应用程序一个类似的问题。我处理跟踪第一响应者或活动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

或只是调整表视图,而键盘在屏幕上。这将是最简单的方法。