Ipad 在UITextField中检测回车

Ipad 在UITextField中检测回车,ipad,pdf,ios6,uitextfield,Ipad,Pdf,Ios6,Uitextfield,我有一个应用程序,允许用户在一系列UITextViews中输入评论。完成后,应用程序将生成pdf报告。由于输入的文本长度不同,应用程序需要计算文本在pdf上的位置 我搞不懂的是如何检测文本中是否包含返回,以便我可以将文本放在pdf的下方。我需要在文本全部完成时以及页面返回时扫描文本,以便在按下键时无法执行此操作。我认为真正的问题不是字符串中有多少换行符,而是呈现文本需要多少空间(这不仅包括用户按enter键的次数,还包括由于太长而无法在单行中显示而对文本进行包装的次数) 如果您使用类似的方式绘制

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


我搞不懂的是如何检测文本中是否包含返回,以便我可以将文本放在pdf的下方。我需要在文本全部完成时以及页面返回时扫描文本,以便在按下键时无法执行此操作。

我认为真正的问题不是字符串中有多少换行符,而是呈现文本需要多少空间(这不仅包括用户按enter键的次数,还包括由于太长而无法在单行中显示而对文本进行包装的次数)

如果您使用类似的方式绘制文本,则会返回一个
CGSize
,告诉您它占用了多少空间,这非常方便。或者,如果您想在渲染之前知道它将占用多少空间,可以使用。如果您使用
CGContextShowText
编写文本,则更为复杂


正如Steve所说,您可以创建一个由这些行组成的数组,其中包含由字符串分隔的
组件,并计算元素的数量

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;
}
-(NSInteger)countOccurrencesOfNewlineInString:(NSString*)字符串
{
NSInteger计数=0;
NSU整数长度=[字符串长度];
对于(整数i=0;i
这应该可以


NSInteger numberOfLines=[[yourString组件由字符串分隔:@“\n”]count]

谢谢,但我不确定这是否是我所需要的。我想知道文本字段中有多少个返回值,这样我就可以计算pdf所需的帧大小。这是在所有文本字段完成后完成的,而不是在按下返回键时完成的。你想知道字符串中的换行数吗?这很简单,but可能无法可靠地告诉您的框架需要多大,因为可能会有长的线条环绕。您是如何创建PDF文件的?我原以为您会在API中寻找一些东西来告诉您给定文本需要多大的框。@Rob-我不必着急。您是对的……UITextViewsthanks@SteveWaddicor所使用的方法非常有效使用纯文本创建pdf,但每当引入新行时就会抛出。因此,是的,我想知道字符串中有多少新行。我正在使用一系列CGContextRef调用创建pdf。计算用户点击返回键的次数很容易,但是如果用户输入了一个真正的换行长行怎么办?这需要多行,但是用户没有按enter键。解决方案取决于您如何呈现文本。使用
CGContextShowText
?还是使用UIKit控件?感谢您的帮助。Steve的回复正是我所需要的,因此使用它。非常完美,非常简单。谢谢。