即时通讯功能的合适用户界面设置是什么?

7
我有一个应用程序,允许用户互相发送消息。这个过程是通过将已发送的消息保存在本地SQLite数据库中完成的,同时将实际发送的消息发送到数据库并使用推送通知将消息发送到接收者的SQLite数据库中。我现在的设置可以正常工作。然而,我困惑的是如何为用户设置实际的交互式UI(我正在使用XCode)。我认为它应该是一个UITableView,每个表格单元格代表一条消息。但是,采用这种方法会遇到一些要求:
可变文本视图大小
与普通的iOS消息一样,TextView的大小需要是可变的,根据每个消息中的所有文本来调整其尺寸。我不知道如何做到这一点。我大致了解如何一般地改变大小,但不知道如何动态地基于该视图内的文本进行调整。
可变文本视图位置
同样,就像普通的iOS消息一样,文本视图需要根据发送方或对话方向左或右偏移。我也不知道如何做到这一点,因为它会改变文本视图的中心。
不可选择性
Xcode允许单元格被按下。处理此选择后发生的事情可以通过didSelectRowatIndexPath tableView函数实现。我可以简单地不实现它,但是单击单元格会使其变暗,以指示已被按下。我想消除这一点,同时保留选择文本并复制粘贴等功能(就像手机上的消息一样)
其他方法?
这才是问题的真正核心。我考虑了上述方法,因为这是我在有限的XCode UI元素经验基础上能想到的全部。如果有更好的方法(甚至是一个pod或框架)来实现此目的,我很乐意听取建议。我不需要消息UI看起来惊人,只要干净利落即可。

你可以使用 JSQMessagesViewController,尽管该主要库已被宣布为过时的,但目前社区仍然非常庞大并在使用它。 https://github.com/jessesquires/JSQMessagesViewController - Ratul Sharker
@RatulSharker 你能在应用商店的应用中使用已弃用的代码吗? - Runeaway3
1
它只是被开源发布者弃用了,而不是苹果SDK代码。因此,它可以在没有任何应用商店拒绝问题的情况下使用。 - Ratul Sharker
1个回答

2
我建议以下做法: 可变的 TextView 大小:
我假设您使用了自动布局。如果没有,请考虑使用它,因为它可以让生活更轻松!
如果您使用 UITableView,您可以通过使用“自我调整单元格”来根据实际内容动态调整其 UITableViewCells 的高度。您可以在这里找到如何做的教程。
可变的 TextView 位置:
我假设您在表视图单元格中有一个 UITextView。在这种情况下,您必须设置自动布局约束以配合单元格的 contentView 边框。如果您定义了一个自定义的子类作为 UITableViewCell,则可以在此类中定义两个 IBOutlet 属性,这些属性链接到左和右布局约束(例如 var leftLayoutConstraint: NSLayoutConstraint)。然后,您可以在自定义表视图单元格的 layoutSubviews 函数中根据需要设置约束的 constant 属性。
不可选择性:
我不确定您所说的“我可以简单地不实现这个”是什么意思。请确保将 UITableViewdelegate 属性设置为您希望处理单元格选择的视图控制器。默认情况下,选择单元格会更改单元格的颜色,但是您可以更改此选项:在 storyboard 中,选择您的表视图的原型单元格,并打开 Xcode 的实用面板(最右上方的按钮)。在“Table view cell”下,您可以找到“Selection”,然后将其设置为“None”。
希望这有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接