3

我正在寻找类似于 Notes 应用程序的行为。它会自动将第一行文本保存为视图名称。我下面的代码将按 Return 时输入的文本保存为 UIView 的标题。我遇到的问题是如果我在输入任何文本之前按回车,然后输入一些文本并再次按回车,它不会保存它。

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{


    NSMutableString *newString = [NSMutableString stringWithString:textView.text];
    [newString replaceCharactersInRange:range withString:text];
    NSRange newLineRange = [newString rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]];

    if(newLineRange.length > 0)
    {
        self.title = [newString substringToIndex:newLineRange.location];
    }
    else {
        self.title = textView.text;
    }

    return YES;

}

有什么建议么?

4

1 回答 1

2

您的代码的问题在于它找到了第一个换行符,并使用从零到其位置的子字符串作为标题。在寻找换行符之前修剪字符串应该可以解决这个问题:第一个非空行(如果有的话)将被选作标题:

[newString replaceCharactersInRange:range withString:text];
NSString *trimmed = [newString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSRange newLineRange = [trimmed rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]];
if(newLineRange.length > 0)
{
    self.title = [trimmed substringToIndex:newLineRange.location];
}
else {
    self.title = trimmed;
}
于 2013-03-24T11:48:28.117 回答