Сохранение контекста CoreData и проблема привязки - PullRequest
1 голос
/ 30 ноября 2010

Я использую CoreData для приложения Mac, которое работает под 10,5 и выше. Содержимое объекта (текстовый атрибут) будет отображаться в NSTextView через привязки. Пользователь может редактировать текст там.

Когда я пытаюсь сохранить контекст управляемого объекта, курсор мыши исчезает из текстового представления, а текстовое представление прокручивается вверх.

Как я могу запретить CoreData / привязке делать это, потому что пользователю досадно терять фокус!

Редактировать: Добавлено решение в виде отдельного ответа, чтобы пометить вопрос как завершенный!

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Я только что нашел решение этой проблемы. Перед сохранением контекста управляемого объекта я сохраняю «состояние» (выбранный диапазон и положение прокрутки) текстового представления

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 голосов
/ 30 ноября 2010

Взгляните на commitEditing перед сохранением. Это приводит к тому, что текстовое представление теряет фокус или даже отменяет все изменения в текущем текстовом поле. Я не думаю, что вы можете предотвратить это поведение. Вы можете восстановить выделение и положение курсора после сохранения. Я также был бы заинтересован в реальном решении этой проблемы.

...