如何检测 NSTextView
中的一行(即“\n”字符)被删除?我可以使用 textView:doCommandBySelector:
轻松监听新行并监听 "insertNewLine:"
。 (参见 here )我还可以使用相同的方法检测字符的删除,但改为监听 "deleteBackward:"
。但是,我不确定如何找出正在删除的字符,因此仅在删除“\n”字符时才执行操作。谁能指出我正确的方法来做到这一点?
最佳答案
解决您的问题并不像听“deleteLine:”方法那么简单,因为正如您发现的那样,没有一个方法。最可能的最佳方法是执行以下操作:
- 创建一个
NSTextViewDelegate
(如果您还没有) - 实现
-textView:shouldChangeTextInRanges:replacementStrings:
- 通过调用 NSString 的
lineRangeForRange:
或– getLineStart:end:contentsEnd:forRange:
检查受影响的范围是否对应于整行 - (注意:您可以通过调用
NSString *text = myTextView.textStorage.string;
来访问 NSTextView 的 NSString) - (另一个重要说明:不要专门查找“\n”字符,因为行可以由其他字符终止,例如“\r”、U+2028(Unicode 行分隔符)、U+2029(Unicode 段落分隔符) )等)
- (还有一个重要提示:不要忘记在
-textView:shouldChangeTextInRanges:replacementStrings:
中返回 YES 以允许进行更改。
我希望这会有所帮助。
关于cocoa - 监听 NSTextView 中行的删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110047/