【发布时间】:2012-05-19 15:30:21
【问题描述】:
我有一个NSTextView,我想在其中使用空格而不是制表符。我虽然会在 textStorageWillProcessEditing: 中的 textview delegate 中使用 replaceOccurrencesOfString:withString:options:range:,但它不起作用(撤消中断)。
请问,有人知道如何实现这样的功能吗?还有其他方法吗?
编辑:这就是我在textStorageWillProcessEditing: 方法中的内容:
ts = [notification object];
[[ts mutableString] replaceOccurrencesOfString:@"\t"
withString:@" "
options:NSLiteralSearch
range:[ts editedRange]];
【问题讨论】:
-
我怀疑你在让它工作方面真的很接近。如果您有文本视图的文本存储句柄,则可以对其进行“
replaceOccurrencesOfString:”调用。修改此问题以显示您到目前为止所做的代码,如果仍然无法正常工作,我会尝试为您回答(如果其他人没有出现并先回答)。 -
@MichaelDautermann:完成,谢谢!
-
这个中断如何撤消?您的代码对我来说似乎工作正常。
-
当我点击“a”、“tab”、撤消、重做时,出现的是“a_”,而不是“a__”。更准确地说,空间在那里,但光标移动到错误的位置。此外,当我粘贴较长的文本时,撤消只会删除其中的一部分。
-
与其使用 NSTextStorage 处理这个问题,不如使用 NSTextView 处理它。你可以在 NSTextViewDelegate 中查看
-textView:shouldChangeTextInRange:replacementString:、-textDidChange:或-textView:didCheckTextInRange:types:options:results:orthography:wordCount:。
标签: cocoa nstextview