1

我正在尝试将删除选定标记操作添加到按钮以删除 NSTokenField 中选定的令牌。

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

此代码不会删除选定的令牌。有任何想法吗?

4

1 回答 1

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 中选择非连续标记的方法。

于 2015-03-19T12:31:19.660 回答