2010-11-30 22 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失去焦點,甚至還原當前文本字段中的所有更改。我不認爲你可以防止這種行爲。保存後可以恢復選擇和光標位置。我也會對這個問題的實際解決方案感興趣。

相關問題