1

我正在为我的 Input Method Kit 输入法创建一个 IMKCandidate 候选窗口:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/IMKCandidates_Class/

然后,您需要覆盖 IMKInputController 方法 CandidateSelectionChanged: 和 CandidateSelected: 以及在您的委托对象中实现候选者方法。IMKInputController 子类通过实现 Candidate 方法为 IMKCandidates 对象提供候选项。当您准备好显示候选人窗口时,调用候选人方法来更新候选人并显示候选人窗口。

我已经实现了 IMKInputControllercandidates:方法来提供候选数组。这很好用。

- (NSArray *)candidates:(id)sender {
    return @[@"`candidates:` method", @"This works great!"];
}

<code>候选人:</code> 方法

但我注意到setCandidateData:添加了一个方法来设置候选字符串,作为依赖委托方法的替代方法。这在我的输入法中会更方便。

@abstract 直接设置候选人数据,而不是通过[IMKInputContoller candidates:].

-(void)setCandidateData:(NSArray*)candidatesArray AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER;

所以我注释掉该candidates:方法,并setCandidateData:改用:

[candidates setCandidateData:@[@"`setCandidateData:` method", @"Doesn't work :("]];
[candidates show:kIMKLocateCandidatesBelowHint];

但是,以这种方式执行此操作时,不会显示候选窗口:

在此处输入图像描述

我也通过控制台看到了这个错误:

CandidateWindowNoCandidatesException:IMKCandidates 显示:无法获取候选字符串。

文档看起来很清楚,setCandidateData:可以用来代替candidates:. 那么为什么不显示候选人呢?

4

0 回答 0