2011-08-31 8 views
18

어떤 시점에서 키보드 입력이 필요한 앱으로 작업하고 있습니다. 내 응용 프로그램은 OpenGL ES를 사용하여 표시하고 텍스트 필드를 표시 할 수있는 자체 그래픽 프레임 워크가 있으며 커서 및 텍스트 렌더링을 관리하는 방법을 알고 있습니다. 이 코드는 Windows 및 OS X와 ​​같은 실제 키보드가있는 다른 플랫폼에서 잘 작동합니다.전체 화면으로 iPhone/iPad 키보드를 표시하는 방법 OpenGL ES 앱

내 앱의 iOS 버전을 작동 시키려면 프로그래밍 방식으로 키보드를 위아래로 가져올 수 있어야합니다. 사용자의 주요 프레스 이벤트를 내보기로 가져와 프레임 워크의 자체 이벤트 시스템으로 라우팅 할 수 있습니다.

나는 this question을 보았지만 거기에 묘사 된 해결책을 만들 수는 없었습니다. 내가 잘못했거나 현재의 iOS 버전에서 작동하지 않기 때문인지 확실하지 않습니다.

편집 : 프로그래밍 방식으로 UI 요소를 만들고 GL ES 화면 위에 표시하는 소스 코드가있는 작업 응용 프로그램을 가리키는 것이 도움이됩니다. 나는 그 부분을 이해하게되면 나머지 부분을 찾아 낼 수 있다고 생각합니다.

+0

어떤 의미로 작동시키지 않았습니까? 키보드가 나타나지 않고, 텍스트 입력을 리디렉션 할 수 없습니다 (델리게이트로 처리하는 것이 더 낫겠습니까?)? UITextField 관련 코드를 표시 할 수 있습니까? – Tommy

+0

키보드가 올바르게 나타나지 않는 것이 문제입니다. 숨겨진 대신 UITextField를 보이게 만들면 내 GL 화면에도 표시되지 않습니다. – Miguel

+0

텍스트 필드를 표시하기 위해 어떤 그래픽 프레임 워크를 사용하고 있습니까? –

답변

22

내가 작업 예제에서 당신을 가리킬 수 없습니다,하지만 난 당신이 찾고있는 것은 기본적인 생각이 여기 당신이 그런 UIView 같은 UIResponder 개체에 UIKeyInput 프로토콜을 구현한다는 것입니다 http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKeyInput_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIKeyInput

믿는다 . 보기를 첫 번째 응답자로 만들고 키보드가 자동으로 나타나야합니다. UIKeyInput 프로토콜은 사용자가 키보드의 단추를 누를 때 문자 삽입 및 문자 삭제에 대한 간단한 피드백을 제공합니다.

코드를 작동하지 않습니다,하지만은 다음과 같이 보일 것이다 :

보기가 attched됩니다
@interface MyKeyboardView : UIView <UIKeyInput> 
@end 

@implementation MyKeyboardView 
- (void)insertText:(NSString *)text { 
    // Do something with the typed character 
} 
- (void)deleteBackward { 
    // Handle the delete key 
} 
- (BOOL)hasText { 
    // Return whether there's any text present 
    return YES; 
} 
- (BOOL)canBecomeFirstResponder { 
    return YES; 
} 
@end 

가 키보드를 보여

[myView becomeFirstResponder]; 

또는 사임 그것에게 첫 번째로 반응을을 첫 번째 응답자가 키보드를 닫습니다.

[myView resignFirstResponder]; 

편집 :보기가 vi에 연결되어 있는지 확인하십시오. ew 계층 또는 아마도 이것은 아무것도하지 않을 것입니다.

+0

고마워, 나는 이것을 시도 할 것이다. 내 응용 프로그램에서 단일보기가 있기 때문에 나는 그것이 이미 첫 번째 응답자라고 생각했습니다. 뷰의 자식 인 텍스트 필드에서 becomeFirstResponder를 호출했습니다. 이것에 대한 두 번째보기를 만드는 데 이점이 있습니까? – Miguel

+3

도움을 주셔서 대단히 감사합니다. 나는 당신의 충고에 따라 키보드를 띄울 수 있었다. 당신이 놓친 한 가지 세부 사항은 분명하지 않을 수도 있습니다. 적어도 UIView는 첫 번째 응답자가되지 않을 것입니다. canBecomeFirstResponder를 구현하고이를 사용하려면 YES를 반환해야합니다. – Miguel

+0

두 번째보기를 사용하여 키보드를 처리하는 것이 큰 이점이 있는지는 잘 모르겠지만 같은보기 (터치 이벤트)로 다른 이벤트를 처리하려는 경우 아마도 하위보기를 사용하면 더 나은 결과를 얻을 수 있습니다 반응 체인에 대한 제어. –