2010-11-30 37 views
1

我使用CoreData来运行10.5和更高版本的Mac应用程序。实体(文本属性)的内容将通过绑定显示在NSTextView中。用户可以在那里编辑文本。保存CoreData上下文和绑定问题

当我尝试保存托管对象上下文时,鼠标光标从文本视图中消失,文本视图向上滚动。

我该如何防止CoreData/binding执行此操作,因为它令用户很烦恼,失去了焦点!

编辑:添加解决方案作为一个单独的答案来标记问题已完成!

回答

0

我刚刚发现了这个问题的解决方案。节省了管理对象上下文之前我救了“状态”(选择的范围和滚动位置)保存我的实体后的文本视图

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个可能的解决方案来滚动视图的滚动位置

0

保存之前请先看看commitEditing。这会导致textview失去焦点,甚至还原当前文本字段中的所有更改。我不认为你可以防止这种行为。保存后可以恢复选择和光标位置。我也会对这个问题的实际解决方案感兴趣。