0

NSTokenField需要很长时间才能对我输入的文本提出建议。更准确地说,会发生以下情况:

  1. 我输入字母“a”
  2. textDidBeginEditing:的方法NSTokenField被立即调用
  3. 一段时间(约 1/2 到 1 秒)
  4. 该方法tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:被调用并且它的执行非常快。

我想了解会发生什么并可能改善这种情况。

我的问题:

textDidBeginEditing:和之间会发生什么tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:


编辑

很奇怪:如果我输入“;” 而不是“a”,它走得更快!即使我做了以下事情:

- (NSArray *)        tokenField:(NSTokenField *)tokenField
        completionsForSubstring:(NSString *)substring
                   indexOfToken:(NSInteger)tokenIndex
            indexOfSelectedItem:(NSInteger *)selectedIndex
{
    return @[@"Hello"];
}
4

1 回答 1

0

我认为这是一个错误OSX 10.9

这就是我所做的。屏幕:

在此处输入图像描述

(这textField是一个NSTokenField

然后,在 this 的委托中NSTokenField,输入以下代码

- (NSArray *)        tokenField:(NSTokenField *)tokenField
        completionsForSubstring:(NSString *)substring
                   indexOfToken:(NSInteger)tokenIndex
            indexOfSelectedItem:(NSInteger *)selectedIndex
{
    return @[@"Jojo!!"];
}



- (id)                        tokenField:(NSTokenField *)tokenField
       representedObjectForEditingString:(NSString *)editingString
{
    return @"Jojo the cat" ;
}




- (NSString *)              tokenField:(NSTokenField *)tokenField
     displayStringForRepresentedObject:(id)representedObject
{
    return @"Jojo" ;
}

你会看到,它的错误。

于 2013-11-07T12:06:57.470 回答