私は、キーボード入力ごとに1回だけコマンドを起動するものを構築しようとしています(QCがネイティブに行うようなすべてのフレームとは対照的です)。そうするために、私は(Freeboardを介して)キーボード入力をリッスンし、現在の入力を以前のバージョンと比較しようとしています。
起こっているように見えるのは、パッチが実行されるたびに以前のバージョンがワイプされているため、文字列を比較する条件が毎回失敗していることです。少し明確にするためのコードを次に示します。
- (BOOL)execute:(id <QCPlugInContext>)context atTime:(NSTimeInterval)time withArguments:(NSDictionary *)arguments
{
self.outputPrevious=previousCharacter;
if ([self.inputCharacter caseInsensitiveCompare:previousCharacter]){
self.outputText=@"SAME";
}
else {
self.outputText=@"CHANGE";
}
previousCharacter = [NSString stringWithString:self.inputCharacter];
[previousCharacter retain];
return YES;
}
ここで、self.outputTextは、ifの結果を示すテキストであり、self.outputPreviousは、前の文字入力が何であったかを示し、self.inputCharacterは、現在のキーボード入力です。
previousCharacterはヘッダーで定義され、でインスタンス化される-init
ため、毎回リセットされる必要はありません。
私はこれでほとんどすべてを試したので、何かアイデアや洞察があれば、それは素晴らしいことです。ありがとう!