如何实现类似于Facebook或Instagram的新闻推送评论页面



Instagram和Facebook都允许用户对新闻源发表评论。在评论场景中,他们基本上有一个包含所有评论的UITableView和一个"页脚",用户可以在其中输入评论并发布。因此,"页脚"是一个UIView或UIToolBar,带有UITextField/UTextView和UIButton。从外观上看真的很简单。我一直在尝试实现它,但键盘不配合。我需要键盘不要隐藏"页脚"。尤其是现在在iOS 8中,键盘上有一个建议工具栏,用户可以选择显示或隐藏。所有这些交互使得在用户输入文本时很难将我的"页脚"保持在键盘正上方。每次我想确定解决方案时,我都会发现大量的错误。

  • 在一个实现中,我使用键盘通知来监听键盘何时向上或向下(部分基于iPhone keyboard Covers UITextField)。这个实现的问题是,当键盘出现时,以及"页脚"从屏幕底部爬到键盘顶部时,会有大约1到2秒的延迟。第二个问题是,当用户在键入时拖动建议工具栏以显示或隐藏它时,会导致我的"页脚"以不可预测的方式移动:这意味着我需要一些静态变量来仔细跟踪与建议工具栏的累积交互,以修复该错误。还要注意,我把"页脚"放在引号里。这是因为我指的不是UITableView页脚。但是,我在UITableView建议的表视图下面创建的视图,会让页脚留在屏幕底部吗?

  • 我尝试的另一个实现是使用"页脚"和键盘工具栏。当用户单击页脚的UITextField时,这将导致键盘显示页脚的副本inputAccessoryView。这基本上是为了在视觉上欺骗用户,让他们认为这是与键盘无缝爬升的同一个页脚。但实际上我使用的是两个复合视图:一个"页脚"和一个键盘工具栏。我遇到的第一个问题是,我似乎无法通过编程使工具栏文本字段成为第一个响应程序。这实际上曾经在ios-7中起作用。但由于我更新到iOS-8,它不起作用。因此,如果我执行footerTextField.inputAccessoryView=keyboardToolBar,然后在文本字段委派方法中检查if(textField==footerTextField){[tooBarTextField becomeFirstResponder];},iOS-8就会忽略整个事情,或者更糟的是,完全忽略键盘和工具栏,所以事实上,当我单击footerTextField时,键盘永远不会出现,因为显示和消除发生得太快了。因此,这在iOS-7中同样有效,但在iOS-8中不起作用。

  • 第三种方法是使父视图成为TPKeyboardAvoidingScrollView,这样我就有了父视图、子视图UITableView和"页脚"。尽管TPKeyboardAvoiding在应用程序的其他场景中对我有效,但无论出于什么原因,它在这里都不起作用。我的猜测是因为我使用UITableView作为UIScrollView的子项之一。

  • 第四种方法是使我的"页脚"成为实际的UITableView部分页脚;部分页脚,因为我希望它浮动在底部。节页脚的问题是它们不会粘在底部,当你滚动表格时,这会给用户带来视觉上不稳定的体验。

好的,我说了很多。最后,有人实现过类似于Facebook/Instagram的NewsFeed评论场景的场景吗?如果是的话,你能帮我吗?

概括一下:Facebook/Instagram输入文本字段随着文本的增长而增长;无论键盘的建议工具栏是显示还是隐藏,都会粘在键盘顶部;当键盘不在时,它会粘在屏幕底部。

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

最新更新