【问题标题】:UITableview scrollToRowAtIndexPath not working for the last rowUITableview scrollToRowAtIndexPath 不适用于最后一行
【发布时间】:2013-08-13 09:31:06
【问题描述】:

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

我已经做了两件事来解决这个问题,但没有奏效。

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

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

请推荐。

【问题讨论】:

  • 确保您已设置委托并使用断点检查是否正在调用该方法。

标签: ios uitableview uitextfield


【解决方案1】:

将动画设置为 NO 对我有用。但不确定其背后的确切原因。

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

【讨论】:

    【解决方案2】:

    在显示键盘时处理滚动的最佳方法是将您的班级注册为UIKeyboardDidShowNotificationUIKeyboardWillShowNotification 的观察者,具体取决于您何时要向上移动内容以及UIKeyboardWillHideNotificationUIKeyboardDidHideNotification取决于您何时想要下移内容。

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

    还要小心,如果您在 UITextField 上调用 resingFirstResponder,则会发送隐藏通知。

    现在,为了让您的表格视图在显示/隐藏键盘时正确滚动,您必须增加/减少表格视图 UIScrollViewcontentSize,并且可能使用 setContentOffset:animated: 而不是 scrollToRow

    【讨论】:

    • 它起作用了,但想知道为什么 scrollToRow 不起作用。不过谢谢!
    • @NabeelThobani scrollToRow 将滚动直到该行可见。因此,如果您的行可见(在底部),它将不再滚动。
    【解决方案3】:

    尝试添加更多内容大小。并尝试查看 tableview 框架的内容大小。如果你愿意,你可以增加两个框架。

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多