我使用CoreData来运行10.5和更高版本的Mac应用程序。实体(文本属性)的内容将通过绑定显示在NSTextView中。用户可以在那里编辑文本。保存CoreData上下文和绑定问题
当我尝试保存托管对象上下文时,鼠标光标从文本视图中消失,文本视图向上滚动。
我该如何防止CoreData/binding执行此操作,因为它令用户很烦恼,失去了焦点!
编辑:添加解决方案作为一个单独的答案来标记问题已完成!
我使用CoreData来运行10.5和更高版本的Mac应用程序。实体(文本属性)的内容将通过绑定显示在NSTextView中。用户可以在那里编辑文本。保存CoreData上下文和绑定问题
当我尝试保存托管对象上下文时,鼠标光标从文本视图中消失,文本视图向上滚动。
我该如何防止CoreData/binding执行此操作,因为它令用户很烦恼,失去了焦点!
编辑:添加解决方案作为一个单独的答案来标记问题已完成!
我刚刚发现了这个问题的解决方案。节省了管理对象上下文之前我救了“状态”(选择的范围和滚动位置)保存我的实体后的文本视图
NSRange selectedRange = [self.textView selectedRange];
NSScrollView* scrollView = [self.textView enclosingScrollView];
// get the current scroll position of the document view
NSPoint scrollPosition = [[scrollView contentView] bounds].origin;
的我恢复了选择的范围和滚动位置
[self.textView setSelectedRange:selectedRange];
// restore the scroll location
[[scrollView contentView] scrollToPoint: scrollPosition];
[scrollView reflectScrolledClipView: [scrollView contentView]];
我找到2个可能的解决方案来滚动视图的滚动位置
保存之前请先看看commitEditing。这会导致textview失去焦点,甚至还原当前文本字段中的所有更改。我不认为你可以防止这种行为。保存后可以恢复选择和光标位置。我也会对这个问题的实际解决方案感兴趣。