2013-10-03 12 views
7

私のアプリでは外付けキーボードの機能をサポートする必要があり、Alt + Tabタブのようなキーの組み合わせが必要です。 IOS 6で、私は、キーを取得するためにUIApplicationサブクラスでIOS 7の外部Bluetoothキーボードの統合

- (void)sendEvent:(UIEvent *)anEvent; 

機能は、外付けキーボードの組み合わせを押して上書きしていました。

今はIOS 7でアプリケーションをテストしていますが、sendEventはハードウェアキーが押されたイベントでも呼び出されないようです。

すべてのソリューション..?

答えて

18

新しいUIKeyCommandクラスとUIResponderチェーンを使用して、iOS 7のBluetoothキーボードでキーボードショートカットを処理する方法が100%サポートされています。ここI did blog about this、しかし要点です:

どこかレスポンダチェーンのUIKeyCommandオブジェクトの配列を返しますkeyCommandsための方法を追加:⌘Fは(テキスト入力ビューに)押された場合、その後

- (NSArray *)keyCommands { 
    UIKeyCommand *commandF = [UIKeyCommand keyCommandWithInput:@"f" modifierFlags:UIKeyModifierCommand action:@selector(handleCommandF:)]; 
    return @[commandF]; 
} 

をResponderチェーンはその方法を探すでしょう。handleCommandF複数の定義がある場合は、最も厳密にスコープされた定義を使用します(たとえば、View自体がViewControllerよりも優先されます)。

これは、入力(UITextFieldまたはUITextViewなど)が最初のレスポンダである場合にのみ機能することに注意してください。あなたのアプリに「グローバル」ショートカットが必要な場合は、UITextFieldを非表示にしてそれに焦点を当てるトリックを行うことができます。

+1

最後の行に[](角かっこ)がありません。 – Klaas

+0

ありがとう! (SOのパディング) – swilliams

+2

UITextFieldは必ずしも必要ではありません。 canBecomeFirstResponder:に対してYESを返すカスタムUIViewサブクラスを作成し、そのカスタムビューをビュー階層に置き、最初のレスポンダとして設定することができます。 – lucius

関連する問題