gpt4 book ai didi

cocoa - 监听 NSTextView 中行的删除

转载 作者:行者123 更新时间:2023-12-03 17:19:48 28 4
gpt4 key购买 nike

如何检测 NSTextView 中的一行(即“\n”字符)被删除?我可以使用 textView:doCommandBySelector: 轻松监听新行并监听 "insertNewLine:"。 (参见 here )我还可以使用相同的方法检测字符的删除,但改为监听 "deleteBackward:"。但是,我不确定如何找出正在删除的字符,因此仅在删除“\n”字符时才执行操作。谁能指出我正确的方法来做到这一点?

最佳答案

解决您的问题并不像听“deleteLine:”方法那么简单,因为正如您发现的那样,没有一个方法。最可能的最佳方法是执行以下操作:

  1. 创建一个 NSTextViewDelegate(如果您还没有)
  2. 实现-textView:shouldChangeTextInRanges:replacementStrings:
  3. 通过调用 NSString 的 lineRangeForRange:– getLineStart:end:contentsEnd:forRange: 检查受影响的范围是否对应于整行
  4. (注意:您可以通过调用 NSString *text = myTextView.textStorage.string; 来访问 NSTextView 的 NSString)
  5. (另一个重要说明:不要专门查找“\n”字符,因为行可以由其他字符终止,例如“\r”、U+2028(Unicode 行分隔符)、U+2029(Unicode 段落分隔符) )等)
  6. (还有一个重要提示:不要忘记在 -textView:shouldChangeTextInRanges:replacementStrings: 中返回 YES 以允许进行更改。

我希望这会有所帮助。

关于cocoa - 监听 NSTextView 中行的删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110047/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com