2010-08-21 4 views
7

iPad 용 사용자 지정 입력 방법을 만들고 있는데, 입력 방법으로 시스템 키보드를 바꾸고 해당 입력 방법을 통해 텍스트를 입력하고 싶습니다.UITextView inputView

설명서에 따르면 입력보기 속성을 내보기로 설정하면 시스템 키보드 대신 사용됩니다. 나는 키보드를 보여 주지만 실제로는 텍스트보기에 텍스트를 어떻게 입력합니까?

아마도 텍스트보기는 UIKeyInput을 채택해야하며 프로토콜 입력 방법은 텍스트를 입력 할 수 있지만 실제로 UITextView는이 프로토콜을 채택하지 않습니다. conformsToProtocol:@protocol(UIKeyInput)이 NO를 반환하고 "deleteBackwards"가 구현되지 않았습니다. (insertText 및 hasText가 구현되었습니다.) 이외에도 "insertText"가 textViewDidChange: 대리자 메서드를 호출하지 않습니다. 분명히 UIKeyInput 메서드를 다른 개체 필드 편집기?)하지만 내가 어떻게 키보드는 당신이 당신의 키에 대한 선택을 설정하지 못할 이유는 몇 가지 버튼을 가지고 가정

답변

5

?

어떤 아이디어를 얻을 때마다 버튼을 textViews 텍스트에 추가 할 이 작업을 잘 수행했습니다 ... UITextView에 실제로 "쓰기"하는 메서드가 있습니다.이 메서드는 inputView에 정의 된 사용자 지정 프로토콜의 일부이며 단추가있을 때마다 위임자에게 호출됩니다 선전이다 d, 도움이되기를 바랍니다. return 키를 누를 때 ret를 제출하고 백 스페이스를 누르면 <을 제출합니다.

-(void)userDidInputString:(NSString*)s 
{ 
    NSRange r=padView.textView.selectedRange; 
    if([s isEqualToString:@"ret"]) 
     [email protected]"\n"; 
    if([s isEqualToString:@"<-"]) 
    { 
     NSString *text=padView.textView.text; 
     if(r.location>0) 
     { 
      r.location=r.location-1; 
      r.length+=1; 
     } 
       [padView.textView setScrollEnabled:YES]; 
     padView.textView.text=[text stringByReplacingCharactersInRange:r withString:@""]; 
     [padView.textView setScrollEnabled:NO]; 
     r.length=0; 
     [padView.textView setSelectedRange:r]; 
     [note setNoteText:padView.textView.text]; 

    } 
    else { 
     NSString *text=padView.textView.text; 

     [padView.textView setScrollEnabled:YES]; 
     padView.textView.text=[text stringByReplacingCharactersInRange:r withString:s]; 
       [padView.textView setScrollEnabled:NO]; 
     r.location=r.location+[s length]; 
     //whenever you modify the text by setting the UITextViews text property it resets the cursor to the end of the text view, we have this line below to go back to where the user left off 
     [padView.textView setSelectedRange:r]; 


      } 


} 
+0

감사합니다. 이 솔루션은 좋지만 텍스트 뷰를 실제로 편집 (및 자동 수정 등으로 완료)하고 텍스트를 직접 편집하지 않는 것이 좋습니다. –

+7

나는 이것에 대해 DTS를 불렀는데, 당신의 솔루션이 정말로 유일한 선택 인 것으로 보인다. 그들의 대답은 UIKeyInput (및 UITextInput)이 클라이언트가 아니기 때문에 (즉,이 메소드를 직접 호출하지 않아야 함) 키보드 입력을 수신하려는보기에만 해당된다는 것입니다. –