8

iPad 用のカスタム入力方法を作成しています。システム キーボードを自分の入力方法に置き換えて、その入力方法を介してテキストを入力できるようにしたいと考えています。

ドキュメントによると、ビューでinputViewプロパティを設定するだけで、システムキーボードの代わりに使用されます。私はそれを行い、キーボードを表示する限りは機能しますが、実際にテキストビューにテキストを入力するにはどうすればよいですか?

おそらく、テキストビューは UIKeyInput を採用する必要があり、プロトコルのメソッドを使用してテキストを入力できますが、実際には UITextView はこのプロトコルを採用していません。conformsToProtocol:@protocol(UIKeyInput)NO を返し、「deleteBackwards」は実装されていません (insertText と hasText が実装されています。さらに、「insertText」はtextViewDidChange:デリゲート メソッドを呼び出しません。明らかに、UIKeyInputメソッドを他のオブジェクト (フィールド エディター)に送信する必要があります。 ?) しかし、どうすれば入手できますか?

何か案は?

4

1 に答える 1

6

キーボードにいくつかのボタンがあると仮定すると、キーのセレクターを設定して、各ボタンがクリックされたときに textViews テキストに追加できないのはなぜですか?このメソッドは、inputView によって定義されたカスタム プロトコルの一部であり、ボタンが押されるたびにデリゲートで呼び出されます。役立つことを願っています。注: return キーが押されたときに ret を送信し、バックスペース押されます。

-(void)userDidInputString:(NSString*)s
{
    NSRange r=padView.textView.selectedRange; 
    if([s isEqualToString:@"ret"])
        s=@"\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];


            }


}
于 2010-08-22T02:23:11.187 に答える