当键盘出现BUG时,滚动表视图从行到顶行

时间:2016-09-28 13:34:54

标签: ios objective-c uitableview

我在每个单元格中都有一个UITableView UITextViews。我想将用户正在编辑UITextView的单元格移动到表格视图的顶部。

这可以通过以下方式轻松实现:

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, self.view.frame.size.height - textViewHeight, 0);

然而,我有一个非常奇怪的问题,在搜索时我找不到任何东西。无论我将contentInset设置为哪种方法,键盘都没有完成动画到屏幕,单元格不会向上移动。就像键盘动画具有某种优先级一样。

经过调查,我发现同时设置contentOffset,实际上会移动单元格,甚至在键盘完成动画制作之前。

有人可以向我解释这种行为,或解释发生了什么事吗?

谢谢!

4 个答案:

答案 0 :(得分:0)

UITextfieldUITextview开始编辑方法调用时,您可以使用UITableView方法

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, self.view.frame.size.height - textViewHeight, 0);
tableView.scrollToRowAtIndexPath(NSIndexPath, atScrollPosition: UITableViewScrollPosition, animated: Bool)

你可以滚动到顶部。我希望这会对你有所帮助

答案 1 :(得分:0)

这类scenerio的最佳方式就是安装IQKeyboardManager Pods,当你点击UITextView时它会自动滚动tableview,你不需要写任何其他内容。

答案 2 :(得分:0)

您正在UITableView使用ViewController。但要实现你想要的最好的方法是使用UITableViewController。因为, 当用户输入任何数据时,它会自动向上滚动(向上滚动到键盘并专注于编辑文本字段)。

答案 3 :(得分:-1)

尝试观察键盘通知UIKeyboardWillShowNotification和UIKeyboardWillHideNotification,将您的代码放入选择器方法。