我正在寻找类似于 Notes 应用程序的行为。它会自动将第一行文本保存为 View 名称。 我下面的代码将按 Return 键输入的文本保存为 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;
}
有什么建议吗?
最佳答案
您的代码的问题在于它找到第一个换行符,并使用从零到其位置的子字符串作为标题。在寻找换行符之前修剪字符串应该可以解决这个问题:第一个非空行(如果有的话)将被选为标题:
[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;
}
关于objective-c - 如何将 UITextView 中的第一行文本保存为 UIView 的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598008/