【问题标题】:How to implement newsfeed comment page similar to Facebook or Instagram如何实现类似于 Facebook 或 Instagram 的新闻源评论页面
【发布时间】:2014-11-20 14:35:53
【问题描述】:

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

  • 在一种实现中,我使用键盘通知来监听键盘何时启动或关闭(部分基于iPhone Keyboard Covers UITextField)。这个实现的问题是,当键盘出现和“页脚”从屏幕底部爬到键盘顶部时,会有大约 1 到 2 秒的延迟。第二个问题是当用户在键入时拖动建议工具栏以显示或隐藏它时,它会导致我的“页脚”以不可预知的方式移动:这意味着我需要一些静态变量来仔细跟踪与建议工具栏的累积交互只是为了修复那个错误。另请注意,我将“页脚”放在引号内。那是因为我指的不是 UITableView 页脚。而是我在UITableView, make footer stay at bottom of screen?

  • 建议的表格视图下创建的视图
  • 我尝试的另一个实现是使用“页脚”和键盘工具栏。当用户单击页脚的 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 输入文本字段随着文本而增长;无论键盘的建议工具栏是显示还是隐藏,都固定在键盘顶部;当键盘消失时,它会粘在屏幕底部。

【问题讨论】:

  • 如果有人不介意在 git 上扔一些代码来演示这个解决方案,那就太棒了。

标签: ios uitableview keyboard uitextfield uitoolbar


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多