2013-10-03 3 views
7

내 앱에서 외부 키보드 기능을 지원해야하며 앱에서 감지되어 일부 이벤트를 트리거하기 위해 Alt + Tab Tab과 같은 키 조합이 필요합니다. IOS 6에서 나는 열쇠를 얻을 수있는 UIApplication 서브 클래스에서IOS 7의 외부 블루투스 키보드 통합

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

기능은 외부 키보드 조합을 누르면 무시했다.

하지만 이제 IOS 7에서 내 앱을 테스트하고 있으며 sendEvent는 하드웨어 키가 눌린 이벤트를 호출하지 않은 것으로 보입니다.

모든 솔루션 ..?

답변

18

새로운 UIKeyCommand 클래스와 UIResponder 체인을 사용하는 iOS 7의 블루투스 키보드에서 키보드 단축키를 처리하는 방법이 100 % 지원됩니다.

이 어딘가에 당신의 응답자 체인

UIKeyCommand 객체의 배열 반환 keyCommands하는 방법을 추가 : I did blog about this, 그러나 여기는 요지의 ⌘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