インプット メソッド キットのインプット メソッドの IMKCandidate 候補ウィンドウを作成しています。
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/IMKCandidates_Class/
次に IMKInputController メソッドの候補の選択変更: と候補の選択: をオーバーライドし、デリゲート オブジェクトに候補のメソッドを実装する必要があります。IMKInputController サブクラスは、候補メソッドを実装することによって IMKCandidates オブジェクトに候補を提供します。候補ウィンドウを表示する準備ができたら、候補メソッドを呼び出して候補を更新し、候補ウィンドウを表示します。
candidates:
候補の配列を提供するIMKInputController メソッドを実装しました。これはうまくいきます。
- (NSArray *)candidates:(id)sender {
return @[@"`candidates:` method", @"This works great!"];
}
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:
ます。では、なぜ候補が表示されないのでしょうか。