NSTextField теряет фокус при перезагрузке соседнего NSTableView - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть поле поиска (NSTextField), которое называется searchField, и когда вы его набираете, оно обновляет данные, показанные в NSTableView.Проблема в том, что это обновление также запускает выбор строки таблицы, и это убирает фокус из NSTextField.

. Пользователь вводит в поле поиска:

func controlTextDidChange(_ obj: Notification) {
  if let field = obj.object as? NSTextField, field == searchField{
    refreshData()
  }
}

Затем NSTableView перезагружается здесь:

func refreshData(){
  //Process search term and filter data array
  //...

  //Restore previously selected row (if available)
  let index = tableView.selectedRow

  tableView.reloadData()

  //Select the previously selected row
  tableView.selectRowIndexes(NSIndexSet(index: index) as IndexSet, byExtendingSelection: false)
}

Если я закомментирую и reloadData(), и selectRowIndexes, тогда поле поиска ведет себя как задумано (я могу продолжать печатать, и он сохраняет фокусв поле).Но если включить один или оба из этих методов, поле поиска теряет фокус после того, как я наберу первый символ и вызывается refreshData().

Как сохранить фокус в поле поиска и не дать таблице перегрузить перехватфокус?

1 Ответ

0 голосов
/ 29 сентября 2018

Тьфу ... оказывается, я никогда не смог заставить NSTableView отпустить фокус, потому что он не был настроен на Пусто состояние выбора.Флажок в Интерфейсном Разработчике исправил это.

NSTableView - Empty

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...