NSTextView 在处理 textDidChange 时插入字符两次
NSTextView Inserting character twice on handling textDidChange
我拦截了 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");
}
}
问题是应用程序是基于文档的应用程序,NSDocument 的自动保存范例没有完全实现,导致出现 异常。显然,当修改由 NSDocument 控制的 UI 时出现 异常时,就会发生这种奇怪的事情。
我拦截了 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");
}
}
问题是应用程序是基于文档的应用程序,NSDocument 的自动保存范例没有完全实现,导致出现 异常。显然,当修改由 NSDocument 控制的 UI 时出现 异常时,就会发生这种奇怪的事情。