我有UITableView
个UITableViewCell
个。{每个单元格包含UITextfield
。点击textField会导致键盘显示。不幸的是,键盘覆盖了iPhone屏幕上较低的一些单元格。
显示键盘时滚动tableView的最简单方法是什么?
我已经尝试了contentOffset
。这适用于实际滚动tableView。但是我无法确定哪个单元格是“活动的”(有一个textField,它当前是第一个响应者)。我的应用程序支持纵向和横向,因此有时需要在设备旋转时滚动tableView。
答案 0 :(得分:2)
跟踪哪个textField当前处于活动状态的一种简单方法是将其tag
属性设置为cellForRowAtIndexPath:
上的indexPath行
另一种方法是使用这一行:
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[textField convertPoint:textField.frame.origin toView:self.tableView]];
在textFieldShouldBeginEditing:
上,当textField变为活动时,或者在设备旋转时的旋转回调中,然后使用scrollToRowAtIndexPath:atScrollPosition:animated:
答案 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
或只是在键盘在屏幕上时调整表格视图的大小。这是最简单的方法。