2013-10-08 57 views
0

當我使用NSTextView很容易觸發帶有建議列表的自動完成彈出窗口,方法complete:或按F5。我想和NSTextFieldCell一樣。 F5工作得很好,但我沒有方法complete:,因此我無法以編程方式打開此類菜單。如何解決它?如何觸發NSTextFieldCell的complete:方法,以顯示自動完成列表?

這是我已經試過:

  1. 實現的NSTextField委託方法textShouldBeginEditing:但鍵被按下後,這種方法只調用,而不是當細胞獲得焦點

  2. 覆蓋在NSTextFieldCell的子類中,但是這種方法從不被調用。無論如何,即使是這樣,我也不知道如何實現它,因爲正如我之前所說的,complete:方法不是單元API的一部分。

  3. 實施

    - (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
    

    但這種方法被調用細胞之前在編輯模式下進入,並再次,我不知道該怎麼辦在2點

謝謝

回答

0

解決方案

子類的NSTextFieldCell和覆蓋此方法來定製它的NSTextView

- (NSTextView *)fieldEditorForView:(NSView *)aControlView 
{ 
    return [[[CBAutocompleteTextField alloc] init] autorelease]; 
} 

子類的NSTextViewCBAutocompleteTextField在我的情況),並添加這個觸發自動完成,當它獲得焦點:

-(BOOL)becomeFirstResponder 
{ 
    [self performSelector:@selector(complete:) withObject:nil afterDelay:0.01]; 
    return YES; 
} 
相關問題