2010-08-21 23 views
7

Ben iPad için özel bir giriş yöntemi yapıyorum, benim giriş yöntemi ile sistem klavye yerine ve bu giriş yöntemi ile metin girmek için isterler.UITextView inputView

belgelerine göre yapmam gereken bütün görüntüsü inputView özelliğini ayarlamaktır ve yerine sistem klavyesinin kullanılacaktır. Bunu yaptım ve klavyeyi gösterdiğim kadarıyla çalışır, ancak metin görünümüne gerçekten nasıl metin girerim?

Sözde metin görünümü UIKeyInput benimsemek gerekiyor ve ben metin girmek için protokol yöntemlerini kullanabilirsiniz ama gerçekte UITextView bu protokolü kabul etmez. conformsToProtocol:@protocol(UIKeyInput) döner HAYIR ve "deleteBackwards" (insertText ve hasText. Uygulanmasını ek olarak, "insertText" çağırılacak textViewDidChange: temsilci yöntemini neden olmaz uygulanmadı. Açıkçası ben (diğer bazı nesneye UIKeyInput yöntemini göndermek gerekir bir alan düzenleyici?) ama nasıl Klavyeniz sadece kendi anahtarları için bir seçici ayarlamak olamaz neden bazı düğmelere sahiptir varsayarsak

cevap

5

?

Herhangi fikir almak ve ne zaman her düğme TextView'lar metne eklenecek yok tıklandığında, ben bu yapmış bir sorunsuz çalışıyor ... İşte aslında UITextView için "yazma" does yöntemdir, bu yöntem inputView tarafından tanımlanan özel bir protokolün bir parçası olduğunu ve her bir düğme temsilci çağrıldığında prese d, umarım yardımcı olur, not: geri tuşuna basıldığında ve < - backspace itildiğinde geri gönderirim.

-(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

teşekkürler. Bu çözümler güzel ama ben aslında düzenleme yapmak (ve normalde, otomatik düzeltme ve benzeri ile tamamlamak için) ve metin kendimi düzenleme yapmak için metin görünümü istiyorum. –

+7

Bu konuda DTS'yi aradım ve çözümünüzün gerçekten tek seçenek olduğu görülüyor. Onların cevabı, UIKeyInput (ve UITextInput) istemcisinin (yani, bu yöntemleri kendiniz çağırmayacaksınız) değil, yalnızca klavye girişini almak isteyen görünümler için olmasıydı. –