我正在寻找类似于Notes应用的行为。它会自动将第一行文本保存为视图名称。 下面的代码保存按回车时输入的文本作为UIView的标题。我遇到的问题是,如果我在输入任何文本之前按Return键,然后输入一些文本并再次按Return键,则不会保存它。
-(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;
}
有什么建议吗?
答案 0 :(得分: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;
}