gpt4 book ai didi

objective-c - NSTokenField 选定的 token

转载 作者:行者123 更新时间:2023-12-02 21:33:21 24 4
gpt4 key购买 nike

我得到了一个 NSTokenField,我在其中通过 setObjectValue:[NSArray ..] 使用自定义对象设置 token 。我实现了一般的 NSTokenFieldDelegate 方法:

- (NSArray *)tokenField:(NSTokenField *)tokenField shouldAddObjects:(NSArray *)_tokens atIndex:(NSUInteger)index
- (NSString *)tokenField:(NSTokenField *)tokenField displayStringForRepresentedObject:(id)representedObject
- (NSTokenStyle)tokenField:(NSTokenField *)tokenField styleForRepresentedObject:(id)representedObject
- (BOOL)tokenField:(NSTokenField *)tokenField hasMenuForRepresentedObject:(id)representedObject
- (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject
- (BOOL)tokenField:(NSTokenField *)tokenField writeRepresentedObjects:(NSArray *)objects toPasteboard:(NSPasteboard *)pboard
- (NSArray *)tokenField:(NSTokenField *)tokenField readFromPasteboard:(NSPasteboard *)pboard

当我在不可编辑的文本字段中看到标记时,一切似乎都正常。

enter image description here

由于它是一个文本字段(不可编辑),因此用户可以选择文本(在本例中为标记)。当用户单击 token 时,它会被标记为已选择。

enter image description here

现在,我尝试找出选定的 token (在鼠标按下操作后),但似乎我无法从 NSTokenField、NSTextField 或 NSControl 访问它。

我尝试使用 tokenField.selectedCell ,它给了我 NSTokenFieldCell: 0x6000001c2b20 ,一个在我的选择上没有改变的对象。当我询问 selectedCell 的representedObject 时,我得到了一个空引用。

有人知道我们如何从 NSTokenField 访问选定的 token 吗?

最佳答案

选择信息位于 NSTokenField 关联单元格的字段编辑器中。此代码摘录会将 self.tokenField 中选择的 token 打印到控制台:

NSArray *objects = [self.tokenField objectValue];
NSTextView *tv = [[self.tokenField cell] fieldEditorForView:self.tokenField];
NSArray *selections =[tv selectedRanges];

for (NSValue *rangeVal in selections) {
NSRange range = [rangeVal rangeValue];
for (NSUInteger i=0; i<range.length; i++) {
NSLog(@"%@", [objects objectAtIndex:range.location + i]);
}
}

关于objective-c - NSTokenField 选定的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com