問題タブ [input-method-kit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - Swift で Mac OS X 用の簡単な入力方法を開発するには?
InputMethodKit フレームワークの API リファレンスがあることは知っています。また、Objective-C にもサンプル コードがありますが、Swift の例は提供されていません。
Swift でシンプルな IME を作成する方法を知っている人はいますか? 何もしないで手紙を繰り返すなどの機能を備えている可能性があるため、実際に機能していることがわかります。どの Xcode SDK を使用してビルドし、正常に実行できますか?
objective-c - IMKCandidates の setCandidateData: を IMKInputController の candidates: デリゲート メソッドの代わりに使用できますか?
インプット メソッド キットのインプット メソッドの IMKCandidate 候補ウィンドウを作成しています。
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/IMKCandidates_Class/
次に IMKInputController メソッドの候補の選択変更: と候補の選択: をオーバーライドし、デリゲート オブジェクトに候補のメソッドを実装する必要があります。IMKInputController サブクラスは、候補メソッドを実装することによって IMKCandidates オブジェクトに候補を提供します。候補ウィンドウを表示する準備ができたら、候補メソッドを呼び出して候補を更新し、候補ウィンドウを表示します。
candidates:
候補の配列を提供するIMKInputController メソッドを実装しました。これはうまくいきます。
setCandidateData:
しかし、デリゲート メソッドに依存する代わりに、候補文字列を設定するメソッドが追加されていることに気付きました。これは、私の入力方法ではより便利です。
@abstract 経由でデータを提供するのではなく、候補データを直接設定します
[IMKInputContoller candidates:]
。
-(void)setCandidateData:(NSArray*)candidatesArray AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER;
candidates:
したがって、メソッドをコメントアウトし、setCandidateData:
代わりに次を使用します。
ただし、この方法で実行すると、候補ウィンドウは表示されません。
コンソールからも次のエラーが表示されます。
CandidateWindowNoCandidatesException : IMKCandidates の表示: 候補文字列を取得できませんでした。
setCandidateData:
の代わりに使用できるドキュメントはかなり明確に見えcandidates:
ます。では、なぜ候補が表示されないのでしょうか。
macos - NSTextInputClientで入力メソッドのステータスを確認するには?
docs から、入力コンテキストが次のメソッドのいずれかをテキスト ビューに送信することがわかります。
insertText:replacementRange:
setMarkedText:selectedRange:replacementRange:
doCommandBySelector:
私のテストケースでは、入力メソッドを有効にすると、keyDown
をトリガーできますが、最後の文字までsetMarkedText:selectedRange:replacementRange
削除し続けると、上記のメソッドをトリガーせずに入力メソッドが非アクティブになります。markedText
入力メソッドが非アクティブ化されるとすぐに何かを実行できるように、非アクティブ化のためのフックのようなものはありますか?
swift - swift を使用して IMKKit の composerString(_:) でクラッシュする
InputMethodKitを使用して迅速な入力方法 (IM) を作成しています。IM は基本的に機能します。Konsole でキーストロークを取得しinputText()
、ログ メッセージを確認します。
今、私はcomposedString(_ sender: Any!)
このように迅速に実装します:
composedString(_ sender: Any!)
を呼び出すと、 がシステムによって呼び出されることを理解していますupdateComposition()
。これは実際に当てはまりますが、composedString(_ sender: Any!)
クラッシュして出力が表示されます。
Appleのドキュメントは次のように述べていcomposedString(_:)
ます:
戻り値:
NSString または NSAttributedString オブジェクトである、現在構成されている文字列。返されるオブジェクトは、自動解放されたオブジェクトである必要があります。
NSMutableString
問題は、 「自動解放と保持」に関して正しく割り当てていないことだと思います。そのクラッシュの問題がそれを解決する方法であることを誰かが明らかにすることができますか.
ありがとう
swift - Xcodeでカスタマイズされたキーレイアウトファイルをロードするには?
Ukelele を使用していくつかのキーレイアウト ファイルを作成し、それらをバンドルにして、各キーレイアウトにorg.atelierInmu.vChewing.keyLayouts.zhuyindachen
.
次に、これをインプットメソッドプロジェクトで使用しようとしています。ただし、次のように手動で設定しても、十分とは言えません。
それを機能させるために何をすべきかについての指示はありますか?