在UITextField中检测回车

时间:2013-05-23 12:00:56

标签: ipad pdf ios6 uitextfield

我有一个应用程序,允许用户在一系列UITextView s中输入评论。完成后,应用程序会生成pdf报告。由于输入的文本长度不同,因此应用程序需要计算将文本放在pdf上的位置。

我无法弄清楚的是如何检测文本中是否包含了返回,以便我可以将文本放在pdf下方。我需要在文本全部完成时以及在页面返回时扫描文本,因此在按下键时不能完成。

2 个答案:

答案 0 :(得分:2)

我原以为真正的问题不是字符串中有多少换行符,而是渲染文本需要多少空间(不仅包括用户输入的次数,还包括多少次将文本包裹的次数,因为它太长而无法放在单行上)。

如果您使用drawInRect之类的内容绘制文字,则返回CGSize,告诉您它占用了多少空间,这非常方便。或者,如果您想知道在渲染之前需要多少空间,可以使用sizeWithFont。如果您使用CGContextShowText撰写文字,则会更复杂。


正如史蒂夫所说,你可以使用componentsSeparatedByString创建这些行的数组,并计算元素的数量。

NSInteger count = [[string componentsSeparatedByString:@"\n"] count];

或者你可以枚举这些行:

- (NSInteger)countLinesInString:(NSString *)string
{
    __block NSInteger count = 0;

    [string enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
        count++;
    }];

    return count;
}

或者您实际上可以计算换行符的数量:

- (NSInteger)countOccurrencesOfNewlineInString:(NSString *)string
{
    NSInteger count = 0;

    NSUInteger length = [string length];

    for (NSUInteger i = 0; i < length; i++)
    {
        if ([string characterAtIndex:i] == '\n')
            count++;
    }

    return count;
}

答案 1 :(得分:1)

这应该这样做。

NSInteger numberOfLines = [[yourString componentsSeparatedByString:@“\ n”] count];