从NSTokenField中删除所选令牌

时间:2015-03-17 12:57:05

标签: macos cocoa swift nstokenfield

我正在尝试向按钮添加删除选定的标记操作,以删除NSTokenField中的所选标记。

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

此代码不会删除所选的令牌。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现这样做的唯一方法是使用字段编辑器返回的选定范围编辑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中选择非连续令牌的方法。