【问题标题】:UITextView disable wrappingUITextView 禁用换行
【发布时间】:2014-12-27 17:39:21
【问题描述】:

我正在为 iOS 7iOS 8 制作应用程序,我想在我的 UITextView 中禁用自动换行。我有一些 ASCII 表,我不希望它们损坏。

我在 StoryBoard 中没有找到该选项,我尝试以编程方式进行。我试过了:

[textView setContentSize:[[textView attributedText] size]];

[textView.textContainer setSize:[[textView attributedText] size]];

似乎没有任何效果。

【问题讨论】:

    标签: ios objective-c xcode uitextview word-wrap


    【解决方案1】:

    问题指定需要水平滚动,但如果您想简单地禁用自动换行并切断不适合的文本,您可以这样做:

    let attributedString = NSMutableAttributedString(string: your_string)
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byClipping // .byTruncatingTail also works
    attributedString.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length))
    your_text_view.attributedString = attributedString
    

    【讨论】:

      【解决方案2】:

      您还可以通过将 UITextView 放入 UIScrollView 并设置来“禁用”自动换行

      textView.isScrollEnabled = false
      

      【讨论】:

        【解决方案3】:
        CGSize txtSize = [editor sizeThatFits:CGSizeMake(0, 0)];
        editor.frame = CGRectMake(0, 0, txtSize.width, self.frame.size.height);
        self.contentSize = CGSizeMake(txtSize.width, self.frame.size.height);
        

        这里的“self”是一个 UIScrollView,会水平滚动 UITextView。 "editor" 是一个 UITextView 并且会垂直滚动。

        【讨论】:

          【解决方案4】:

          UITextView 是为您尝试删除的这个确切功能而创建的。根据您的用例,UITextView 可能不是最佳选择。有很多方法可以在不使用 UITextView 的情况下完成此操作。这里有几个:

          1) 如果文本不可编辑,您可以使用 UILabel。为 Line Breaks 和 Autoshrink 设置 Number Of Lines = 0 和适当的设置。

          2) 如果文本需要可编辑,您应该在 UIScrollView 中使用 UITextField。

          3) 制作一个自定义 UIView 来计算所需的空间并自己绘制文本。 (此选项是最强大的,但通常不是必需的,并且可能会引入一些问题。上述控件将具有 Apple 已经为您制定的此类逻辑)。

          希望这会有所帮助。

          【讨论】:

          • 非常感谢,我会在星期一测试它并通知您。我需要一个多行文本,但我不知道UITextField 是否能满足我的要求。
          • 我可以使用UILabel 做到这一点。不幸的是,它不适用于尺寸大于 10000 像素的标签。
          • 真可惜,虽然我认为 UILabel 确实需要一些限制。
          • UITextView 是为您要删除的确切功能而创建的。 它是专门为将文本换行到下一行而创建的?
          • UITextField 好像不支持多行?或者至少我无法找到一种方法将其配置为接受多行,您能否详细说明 UITextField 选项?
          【解决方案5】:

          我不确定您的界面到底是什么样的,但这里有几个选项:

          您可以尝试这个答案来检测自动换行并从那里开始。 Word wrap detecting in UITextView

          它可能对你有用。或者尝试使用贝塞尔路径来绘制你想要的线条。或者像这里的 NSTextContainer Adding exclusion paths to multiple text views

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-28
            • 2022-01-23
            • 2010-12-11
            • 2011-11-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多