У меня есть NSTableView в диалоговом окне, которое связано с коллекцией экземпляров модели CoreData через NSArrayController в режиме «Имя объекта». Таблица отображает name
s массива управляемых объектов в одном столбце. Это хорошо работает.
Имена в строках таблицы доступны для редактирования. Если пользователь редактирует имя, когда к таблице не применена сортировка, редактирование продолжается в обычном режиме. После нажатия Return новое имя записывается, а фокус ввода остается в NSTableView. Однако, если щелкнуть заголовок столбца в табличном представлении для сортировки таблицы имен, фокус ввода сбивается после редактирования . Он остается в окне или в более широком представлении (не уверен, какой именно), но выходит за пределы таблицы; кольцо фокусировки исчезает, а цвет фона выделенного элемента меняется с синего на серый. Нажатие Tab снова возвращает фокус ввода в табличное представление.
Это только происходит, если содержимое таблицы отсортировано. Если для привязки выбрано значение «Непрерывно обновляет значение», это катастрофично, так как в ту минуту, когда вводятся любые символы, табличное представление, кажется, хочет пересортировать себя (это нормально), и фокус выпрыгивает из него (это не так, как для пользователя пытался что-то напечатать).
Что касается этого аспекта системы, то здесь нет кода - все это делается с помощью привязок, установленных в Интерфейсном Разработчике. Предположительно, я случайно установил или очистил какой-то параметр, который у меня не должен быть.
В случае, если это поможет читателю понять, в чем дело - у меня также есть модальный лист, прикрепленный к диалоговому окну, содержащему NSTableView. Лист используется для редактирования сведений об элементе, выбранном в табличном представлении. Элементы управления в этом также связаны с привязками к модели CoreData, используя тот же NSArrayController, что и диалоговое окно «позади» листа. Появляется та же проблема - как только вводится новое имя, фокус возвращается к диалоговому окну «позади» модального листа.
Единственный задействованный код - это то, что используется для обработки действия «изменить этот элемент» и запуска модального сеанса для листа.
Что происходит? Куда движется фокус и почему он перемещается только из-за повторной сортировки в NSTableView?
Спасибо!