如何实施类似于Facebook或Instagram的新闻源评论页面

问题描述:

Instagram和Facebook都允许其用户对新闻源进行评论。在评论场景中,他们基本上有一个包含所有评论和“页脚”的UITableView,用户可以在其中输入评论并发布它们。所以“页脚”是一个UIView或UIToolBar与UITextField/UITextView和UIButton。真正简单的东西从它的外观。那么我一直在试图实现它和键盘不合作。我需要键盘才能隐藏“页脚”。特别是在iOS 8中,键盘带有一个用户可以选择显示或隐藏的建议工具栏。所有这些交互操作都会让用户在输入文本时很难将“页脚”保持在键盘的正上方。每当我想到我指出解决方案时,我就会发现大量的错误。如何实施类似于Facebook或Instagram的新闻源评论页面

  • 在一个实现中,我用键盘通知监听键盘处于上升或下降(部分基于iPhone Keyboard Covers UITextField)。这种实现的问题在于,当键盘显示出来并且“页脚”从屏幕底部爬到键盘顶部时,存在约1到2秒的滞后时间。第二个问题是,当用户拖动建议工具栏以在打字时显示或隐藏它时,它会导致我的“页脚”以不可预知的方式移动:这意味着我需要一些静态变量来精确跟踪与建议工具栏的累积交互,修复该错误。另外请注意,我将“footer”放在引号内。这是因为我不是指UITableView页脚。而是我在0123.

  • 建议的表视图下创建的视图我试过的另一个实现是使用“页脚”和键盘工具栏。当用户单击页脚的UITextField时,会导致键盘显示页脚的副本作为inputAccessoryView。这基本上是为了在视觉上欺骗用户,使其认为它是用键盘无缝攀登的相同页脚。但实际上我使用了两种复合视图:“页脚”和键盘工具栏。我遇到的第一个问题是,我似乎无法以编程方式使工具栏文本字段成为第一响应者。这实际上用于在ios-7中工作。但是,自从我更新到iOS-8后,它就无法工作。所以如果我做footerTextField.inputAccessoryView=keyboardToolBar,然后在文本字段委托方法检查if(textField==footerTextField){[tooBarTextField becomeFirstResponder];},iOS-8只是忽略了整个事情,或者更糟糕的是,完全消除键盘和工具栏,所以事实上,当我点击footerTextField时键盘从不显示,因为显示和解散发生得如此之快。再次,这用于在iOS-7中工作,但在iOS-8中不起作用。

  • 第三种方法是让父视图为TPKeyboardAvoidingScrollView,这样我就可以拥有父级和子级UITableView和“footer”。虽然TPKeyboardAvoiding在应用程序的其他场景中为我工作,但无论出于何种原因,它在这里都不起作用。我的猜测是因为我使用UITableView作为UIScrollView的子项之一。

  • 第四种方法是让我的“页脚”成为实际的UITableView页脚;因为我想让它漂浮在底部。部分页脚的问题在于它们不会粘在底部,因此在滚动表格时会给用户带来视觉上不稳定的体验。

好的,所以我说了很多。所以最后,有没有人实施过类似Facebook/Instagram的NewsFeed评论界的场景?如果是这样,你能帮我吗?回顾:Facebook/Instagram输入文本字段随文本增长;无论键盘的建议工具栏是显示还是隐藏,都会粘贴到键盘的顶部;当键盘消失时,它会粘在屏幕的底部。

+2

如果有人不介意在git上抛出一些代码来演示此解决方案,那将是非常棒的。 – 2014-09-25 18:49:12

SlackTextViewController似乎符合您的所有要求,并且写得非常好。