0
我有一個NSTextView包含多行文本。當調用-deleteToBeginningOfLine:
,整個字符串被刪除,而不是最後一行:NSTextView的deleteToBeginningOfLine:刪除整個字符串
NSTextView *textView = [[NSTextView alloc] initWithFrame:NSZeroRect];
textView.string = @"foo\nbar";
[textView deleteToBeginningOfLine:nil];
NSAssert([textView.string isEqualToString:@"foo\n"], @""); // fail, string is "".
// Modifying the selected range doesn't help.
textView.string = @"foo\nbar";
textView.selectedRange = NSMakeRange(textView.string.length, 0);
[textView deleteToBeginningOfLine:nil];
NSAssert([textView.string isEqualToString:@"foo\n"], @""); // ditto.
// Using \r\n changes nothing.
textView.string = @"foo\r\nbar";
[textView deleteToBeginningOfLine:nil];
NSAssert([textView.string isEqualToString:@"foo\r\n"], @""); // ditto.
當視圖已經在一個窗口中進行佈局,它按預期工作。但是我想在將視圖添加到任何其他視圖之前編輯該字符串。我如何完成這項工作?
你確定你瞭解術語「line」嗎?我很確定,你沒有。這不是「段落」。 – 2014-09-06 13:10:10
@Amin我認爲一行是由單行換行分隔的一部分字符串,所以字符串「foo \ nbar」由兩行「foo」和「bar」組成。刪除開頭(從某處開始)應該最多刪除一行,而不是兩行。那麼,「段落」是什麼意思?這是不是由兩個或更多連續換行符分隔的一組「行」? – uasi 2014-09-06 13:30:30
然後,我發現「行」實際上計數插入換行作爲文本換行的結果。當文本視圖太窄時,「foo \ nbar」可能超過兩行。 – uasi 2014-09-06 13:36:36