objective-c - 如何将 UITextView 中的第一行文本保存为 UIView 的标题?

标签 objective-c cocoa-touch ios6 nsstring uitextview

我正在寻找类似于 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/

相关文章:

iphone - 无法使用 ShareKit 在 iPhone 上发布到 Twitter

iphone - iOS 6.0 上的 MFMessageComposeController 中 UIButton 为 nil

使用 block 时的 iPhone EXC_BAD_ACCESS

iphone - iOS:如何使UIImage模糊?

iphone - 应用程序打开时,系统是否可以删除 NSCachesDirectory 的内容?

iphone - 10 分钟无交互后自动退出我的应用程序

iphone - 检测动画的完成

ios - 如何在键盘已经打开的情况下呈现 JSQMessagesViewController?

ajax - IOS6 和 Safari 照片上传 - 文件 API + Canvas + jQuery Ajax 异步上传和调整文件大小

Facebook SDK 3.1 presentShareDialogModally 失败