NSTextView在处理textDidChange时插入两次字符

时间:2016-02-04 07:52:31

标签: cocoa nstextview caret

我拦截了NSTextView的textDidChange事件,试图检测转义语句的开头和结尾。麻烦的是,当我实际尝试做任何事情时,类型字符被插入两次。

例如

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

有谁理解为什么会这样?我已经在下面的textview委托中发布了代码。

- (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("}}end\n");
    }


}

1 个答案:

答案 0 :(得分:0)

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