Удалить выбранный токен из NSTokenField

Я пытаюсь добавить действие удаления выбранного тега на кнопку, чтобы удалить выбранные токены в NSTokenField.

@IBAction func deleteSelectedTag(sender: AnyObject) {
    let fieldEditor = (tagTokenField.cell() as! NSCell).fieldEditorForView(tagTokenField)
    if fieldEditor?.selectedRanges.count > 0 {
        fieldEditor?.delete
    }
}

Этот код не удаляет выбранный токен / ы. Есть идеи?

1 ответ

Единственный способ, которым я нашел это, - это отредактировать массив NSTokenField.value был связан с использованием выбранного диапазона, возвращенного редактором полей:

@IBAction func deleteSelectedTag(sender: AnyObject) {
    let fieldEditor = (tagTokenField.cell() as! NSCell).fieldEditorForView(tagTokenField)
    if fieldEditor?.selectedRanges.count > 0 {
        let range = fieldEditor!.selectedRanges.first as! NSRange
        fieldEditor!.setSelectedRange(NSMakeRange(0, 0)) // Set to no selection
        selectedNote.tags!.removeRange(range.location..<range.location + range.length)
    }
}

После тестирования я обнаружил, что selectedRanges всегда возвращает только один NSRange с location быть индексом токена и length количество выбранных токенов. По крайней мере, я не нашел способа выбрать несмежные токены в NSTokenField.

Другие вопросы по тегам