如何判断 UITextView 文本是不是换行?

Posted

技术标签:

【中文标题】如何判断 UITextView 文本是不是换行?【英文标题】:How can I tell if a UITextView text is wrapping?如何判断 UITextView 文本是否换行? 【发布时间】:2012-09-01 10:58:02 【问题描述】:

我正在尝试用笔划绘制一段文本。所以做一些搜索和实验似乎做到这一点的方法是子类化 UIView 并在 drawRect 中用笔画绘制文本。绘图代码如下。

按照我的设置方式,我使用 UITextView 以交互方式输入我想要的文本,然后将文本传递给用笔画绘制的 UIView 子类广告。

这似乎工作得很好。唯一的问题是当按下回车键(创建一个新行),或者换行因为它对于 UITextView 来说太宽了,这个信息没有传递,所以在我绘制的渲染(描边)文本中没有新行在 UIView 子类中。

有什么帮助吗?

绘制代码(注意theText是一个属性,用来传递UITextView的文本):

    UIFont *font =  [UIFont fontWithName:@"Arial" size:fontSize];
    CGPoint point = CGPointMake(0,0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
    CGContextSetLineWidth(context, 4.0);
    CGContextSetTextDrawingMode(context, kCGTextFillStroke);
    CGContextSaveGState(context);
    [theText drawAtPoint:point withFont:font];
    CGContextRestoreGState(context);

【问题讨论】:

【参考方案1】:

你必须复制 uitextview 的包装逻辑。询问字符串子字符串需要多长,以及何时长到适合它的回绕。

您还可以查看 DTCoreText,这是一个可让您呈现属性文本的类。然而,模仿文本视图并支持文本输入的版本需要一些成本。最后,成本可能是值得的,因为复制文本视图需要时间。

【讨论】:

谢谢大卫。是不是说按下回车键时没有隐藏代码(\n),也不是在换行时没有隐藏代码。因为如果有的话,我想这只是阅读这些角色并传递它们的问题。 返回键几乎可以肯定 - 它是一个告诉 textView 转到下一行的单个字符。它是对您来说最成问题的另一种包装 - 连字符,在单词变短时退格,因此视图回绕一行。我敢说你最好写你自己的 UITextView 而不是试图猜测它在做什么。您确定您使用的字体在 Unicode 空间中没有删除线字符吗?您也许可以找到或购买带有这种东西的字体,然后您会变得容易得多 - 只需替换字符即可。

以上是关于如何判断 UITextView 文本是不是换行?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - UITextView 中的换行符

js 如何判断文本内容是不是换行了

UITextView 在换行符/自动换行符后显示空格

滚动 UITextView 而不换行

Swift:在 UITextView 中使用占位符文本禁用空白/换行符文本的栏按钮

检测换行符以在 iOS 上的 UITextView 上自动输入换行文本