3

メモアプリに似た動作を探しています。テキストの最初の行をビュー名として自動的に保存します。以下の私のコードは、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;

}

助言がありますか?

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 に答える