キーコマンドが登録されている場合、ユーザーがキーを長押ししすぎると、アクションが何度も呼び出されることがあります。 ⌘Nのように何度も新しいビューを繰り返し開くことができます。ブール型の "既にトリガされた"フラグのようなものに頼らなくても、この動作を止める簡単な方法はありますか?ここでUIKeyCommandの繰り返しアクションを停止
は、私は2つの異なるキーコマンドを登録する方法は次のとおりです。
#pragma mark - KeyCommands
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (NSArray<UIKeyCommand *>*)keyCommands {
return @[
[UIKeyCommand keyCommandWithInput:@"O" modifierFlags:UIKeyModifierCommand action:@selector(keyboardShowOtherView:) discoverabilityTitle:@"Show Other View"],
[UIKeyCommand keyCommandWithInput:@"S" modifierFlags:UIKeyModifierCommand action:@selector(keyboardPlaySound:) discoverabilityTitle:@"Play Sound"],
];
}
- (void)keyboardShowOtherView:(UIKeyCommand *)sender {
NSLog(@"keyboardShowOtherView");
[self performSegueWithIdentifier:@"showOtherView" sender:nil];
}
- (void)keyboardPlaySound:(UIKeyCommand *)sender {
NSLog(@"keyboardPlaySound");
[self playSound:sender];
}
#pragma mark - Actions
- (IBAction)playSound:(id)sender {
AudioServicesPlaySystemSound(1006); // Not allowed in the AppStore
}
サンプルプロジェクトは、こちらからダウンロードすることができます。一般的にはTestKeyCommands.zip
これは公開APIの一部ではありません。助けてくれてありがとう! – Brent