gpt4 book ai didi

objective-c - NSTokenField 委托(delegate)

转载 作者:行者123 更新时间:2023-12-03 17:16:26 25 4
gpt4 key购买 nike

在 Apple 的“Cocoa token 字段编程指南”中的“与委托(delegate)的基本交互”部分中,当用户在 token 字段中键入一些文本时,委托(delegate)会收到 tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:消息。

当用户键入时,标记字符委托(delegate)会收到 tokenField:representedObjectForEditingString: 消息。

因此,当我实现此方法时,它的行为方式非常不同。

这是我的委托(delegate)方法的实现:

- (NSArray *)tokenField:(NSTokenField *)tokenFieldArg
completionsForSubstring:(NSString *)substring
indexOfToken:(NSInteger)tokenIndex
indexOfSelectedItem:(NSInteger *)selectedIndex {

NSLog(@"completionsForSubstring: %@", substring);
return [NSArray array];
}

- (id)tokenField:(NSTokenField *)tokenField
representedObjectForEditingString:(NSString *)editingString {

NSLog(@"representedObjectForEditingString: %@", editingString);
return editingString;
}

当我在 token 字段中输入“maksim”然后删除它时,会有一个日志:

2011-03-01 19:03:01.286 Aurum[23269:a0f] representedObjectForEditingString: m
2011-03-01 19:03:01.287 Aurum[23269:a0f] representedObjectForEditingString: m
2011-03-01 19:03:01.493 Aurum[23269:a0f] completionsForSubstring: m
2011-03-01 19:03:01.633 Aurum[23269:a0f] representedObjectForEditingString: ma
2011-03-01 19:03:01.633 Aurum[23269:a0f] representedObjectForEditingString: ma
2011-03-01 19:03:01.637 Aurum[23269:a0f] completionsForSubstring: ma
2011-03-01 19:03:03.737 Aurum[23269:a0f] representedObjectForEditingString: mak
2011-03-01 19:03:03.737 Aurum[23269:a0f] representedObjectForEditingString: mak
2011-03-01 19:03:03.741 Aurum[23269:a0f] completionsForSubstring: mak
2011-03-01 19:03:05.089 Aurum[23269:a0f] representedObjectForEditingString: maks
2011-03-01 19:03:05.089 Aurum[23269:a0f] representedObjectForEditingString: maks
2011-03-01 19:03:05.094 Aurum[23269:a0f] completionsForSubstring: maks
2011-03-01 19:03:05.841 Aurum[23269:a0f] representedObjectForEditingString: maksi
2011-03-01 19:03:05.841 Aurum[23269:a0f] representedObjectForEditingString: maksi
2011-03-01 19:03:05.845 Aurum[23269:a0f] completionsForSubstring: maksi
2011-03-01 19:03:06.697 Aurum[23269:a0f] representedObjectForEditingString: maksim
2011-03-01 19:03:06.697 Aurum[23269:a0f] representedObjectForEditingString: maksim
2011-03-01 19:03:06.701 Aurum[23269:a0f] completionsForSubstring: maksim
2011-03-01 19:03:12.353 Aurum[23269:a0f] representedObjectForEditingString: maksi
2011-03-01 19:03:12.354 Aurum[23269:a0f] representedObjectForEditingString: maksi
2011-03-01 19:03:12.853 Aurum[23269:a0f] representedObjectForEditingString: maks
2011-03-01 19:03:12.854 Aurum[23269:a0f] representedObjectForEditingString: maks
2011-03-01 19:03:12.936 Aurum[23269:a0f] representedObjectForEditingString: mak
2011-03-01 19:03:12.937 Aurum[23269:a0f] representedObjectForEditingString: mak
2011-03-01 19:03:13.020 Aurum[23269:a0f] representedObjectForEditingString: ma
2011-03-01 19:03:13.020 Aurum[23269:a0f] representedObjectForEditingString: ma
2011-03-01 19:03:13.103 Aurum[23269:a0f] representedObjectForEditingString: m
2011-03-01 19:03:13.104 Aurum[23269:a0f] representedObjectForEditingString: m

那么谁能解释一下出了什么问题以及为什么 token 字段表现得如此奇怪?

最佳答案

我只是尝试通过复制并粘贴您的代码来重现此问题。我得到:

2011-03-09 14:52:48.888 StackOverflowTesting[27789:a0f] completionsForSubstring: m
2011-03-09 14:52:49.242 StackOverflowTesting[27789:a0f] completionsForSubstring: ma
2011-03-09 14:52:49.560 StackOverflowTesting[27789:a0f] completionsForSubstring: mak
2011-03-09 14:52:49.911 StackOverflowTesting[27789:a0f] completionsForSubstring: maks
2011-03-09 14:52:50.017 StackOverflowTesting[27789:a0f] completionsForSubstring: maksi
2011-03-09 14:52:50.217 StackOverflowTesting[27789:a0f] completionsForSubstring: maksim
2011-03-09 14:52:50.647 StackOverflowTesting[27789:a0f] representedObjectForEditingString: maksim

这正是我所期望的输出。您是否更改了 NSTokenField 的默认标记字符?当您点击标记化字符时,它看起来不像标记化了 maksim(因为毕竟您可以逐个字符地删除它)。

关于objective-c - NSTokenField 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163918/

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