UITableview scrollToRowAtIndexPath不适用于最后一行

时间:2013-08-13 09:31:06

标签: ios uitableview uitextfield

在tableview的最后一行,我有一个文本字段,它接受输入和完成,它在行中添加一个文本并更新tableview。当键盘出现时,我需要将tableview滚动到最后一行。

我已经做了两件事来管理它,但它没有用。

-(void) textFieldDidBeginEditing:(UITextField *)textField {
    [archiveTabelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow  inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:YES];
    archiveTabelView.scrollEnabled = NO;
}

它不起作用,如果我们在延迟后调用scrollToRowAtIndexPath它甚至不能正常工作。

请建议。

3 个答案:

答案 0 :(得分:1)

将动画设为NO以某种方式对我有效。不确定这背后的确切原因。

[archiveTabelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow  inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];

答案 1 :(得分:0)

尝试添加更多内容大小。并尝试查看tableview框架的内容大小。如果你想要,可以同时删除两个框架。

答案 2 :(得分:0)

在显示键盘时处理滚动的最佳方法是将您的班级作为观察者注册到UIKeyboardDidShowNotificationUIKeyboardWillShowNotification,具体取决于您何时要移动内容并{{1或UIKeyboardWillHideNotification取决于您何时想要移动内容。

当在通知对象中发送其中一个通知时,您可以找到键盘大小,此大小将允许您向上/向下移动内容或正确地增加/减少UIKeyboardDidHideNotification

另外请注意,如果您在contentSize上拨打resingFirstResponder,则会发送隐藏通知。

现在,为了让您的桌面视图在键盘显示/隐藏时正确滚动,您必须增加/减少tableView UITextField的{​​{1}}并可能使用contentSize而不是UIScrollView