NSTextView 在处理文本时插入字符两次DidChange



我已经截获了NSTextView的textDidChange事件,以检测转义语句的开头和结尾。 问题是,当我实际尝试做任何事情时,键入的字符似乎入了两次。

例如

  • 。成为。。
  • {
  • 变为 {{
  • | 成为 ||

有谁明白为什么会这样?我已经在下面发布了文本视图代表的代码。

- (void)textDidChange:(NSNotification *)aNotification
{
    //get the caret position
    NSInteger insertionPoint = [self.manuscriptTextView selectedRange].location;
    NSInteger low =insertionPoint -2;
    NSRange r = {low, insertionPoint};
    NSString* parse = [self.manuscriptTextView.textStorage.string substringWithRange:r];
    if([parse isEqualToString:@"{{"])
    {
        printf("begin{{n");
    }
    else if([parse isEqualToString:@"}}"])
    {
        printf("}}endn");
    }

}

问题是应用程序是基于文档的应用程序,并且 NSDocument 的自动保存范例未完全实现,导致发生异常。 显然,当修改由NSDocument控制的UI时出现异常时,可能会发生这样的奇怪事情。

最新更新