【问题标题】:Text input box like the SMS app on the iPhone文本输入框,类似于 iPhone 上的 SMS 应用程序
【发布时间】:2011-01-22 12:13:03
【问题描述】:

我在尝试获取类似于 SMS 应用程序中的输入框时遇到了麻烦。

谁能提供一些关于如何构建其中一个并使其看起来不错的指导?我需要一个形状很像 UITextfield 但在键入时会垂直拉伸的输入框。

我假设我需要计算文本的宽度并在文本换行时垂直拉伸覆盖图像框架。我最近的一次确实会拉伸,但光标在接近边界时会四处弹跳。

更新:

我每天都在做这个工作一个星期,我已经放弃了 UITextView。我可以让它正确拉伸,但是当退格时,Textview 的高度在上升时会收缩太多。当我继续退格时,它会自行纠正。例如,当我在第 4 行并退格到第 3 行时,它会显示此行为。然后当我继续退格时,它会更正,直到我到达第 2 行的末尾。然后它会自行更正,......等等。

我决定尝试继承 UITextField,但我什至无法让它以我指定的帧大小显示。 150,150,150,150。

【问题讨论】:

  • 你看过 Three20 的 TTTextEditor 吗? (见下面我的回答)。

标签: iphone objective-c cocoa-touch uikit uitextview


【解决方案1】:

试试Chat Input Sample。它具有类似于 SMS 应用程序的外观和功能。

【讨论】:

    【解决方案2】:

    Three20 项目有一个控件应该为您执行此操作。

    来自 Three20 自述文件:

    TTTextEditor 是一个 UITextView,它可以 随着你的身高自动增长 类型。我用它来输入消息 在 Facebook 聊天中,它的行为 类似于苹果短信中的编辑器 应用程序。

    【讨论】:

    • 我终于决定走这条路了。
    【解决方案3】:

    【讨论】:

    • 我认为 UITextField 不支持多行。我一直在尝试使用 UITextView 来完成这项工作,但我不知道如何给它一个像 SMS 应用程序那样的“框架”(圆形椭圆形)外观。
    • @Bobby GAH!你说得对,我完全忘记了这一点;谢谢你提醒我。 :) 在这种情况下,您必须自己在UITextView 周围绘制边框。
    • 要给它一个圆形的椭圆形覆盖,在它上面添加一个UIImageView。然后将其图像属性设置为使用stretchableImageWithLeftCapWidth:topCapHeight: 方法创建的UIImage(查看文档了解更多信息)。
    • 如果你继承 UITextField,并覆盖editingRectForBounds,你可以让它支持多行。您只需要计算光标的位置以及何时应该调整大小和更改矩形。
    • 我终于得到了高于标准的 uitextfield。但我仍然无法让光标下降到下一行。它应该通过扩大边界来做到这一点,还是我必须在代码中移动光标?
    【解决方案4】:

    我知道这已经过时了,但对于仍在查看此答案的人来说,现在 Slack 提供了一个很好的控件,称为 SlackTextViewController

    【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2011-05-30
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多