2011-01-12 10 views
0

私は自分のアプリ用のカスタムキーボードを作って、送りボタンを使って文字を設定したいと思っています。カスタムiPhoneキーボード

私のすべてのボタンに名前を付けます。 * a、* b、* c、* dなどは、送信者を取り、名前をつかむ1つのIBActionを持つように動作します。 * a> a?もしそうなら、これはどのように行われますか?

また、* 0、* 1、* 2ではなく、* 0、* 1、* 2という名前のボタンを使用できますか?

おかげ

答えて

1

いいえ、変数は実際にはそのようには機能しません。オブジェクト自体を指す変数の名前と混同しています。あなたのIBactionがUIButtonオブジェクトを渡されるときに、変数名を渡すのではなく、メソッドはそれを参照する変数をsenderとして定義します。変数名はObjective Cの桁で始めることはできません。

このようにボタンを区別する一般的な方法は、タグとブランチを設定することです。また、タイトルにアクセスすることもできます。これは、あなたが何をしているのかによって異なります。

+0

middaparkaの回答[送信者の現在のタイトル]。だから、タイトルは*ゼロでなければなりません。ありがとう。 – jarryd

+0

@alJaree、アスタリスクで接頭辞を付ける方法では、変数名について話しているようです。これは本当ですか?もしそうなら、 '[sender currentTitle]'はあなたに変数名を与えません。ボタンのテキストが表示されます。 – Jim

+0

はい。私はボタンUIButton * aを作成し、1つのIBActionを使用して送信者にアクセスすることによって、その 'a'と他のすべてのキーの名前を取得したいとします。これは可能ですか? – jarryd

1

あなたが同じIBActionで複数UIButtonsをポイントし、ボタンのテキストラベルを抽出する意味場合、あなたは、単に送信者のcurrentTitleプロパティを使用することができます。例えば

- (IBAction)padButtonClicked:(id)sender { 
    NSLog(@"Button pressed: %@", [sender currentTitle]);  
} 
+0

ありがとうございます。ボタンは名前をつけることができますか?0 – jarryd

+0

@alJareeそれは単なるテキストラベルなので、なぜそうは見えません。 –

+0

現在のタイトルで何らかの種類のチェックが必要か、それともすべてがString形式ですか? – jarryd

1

あなたは、ボタンのタグを使用したほうが良いです。

- (IBAction)buttonTapped:(id)sender { 

    NSLog(@"Button pressed: %i", sender.tag);  

    switch (sender.tag) { 

     case 0: 
      /* Button A Pressed */ 
      break; 
     case 1: 
      /* Button B Pressed */ 
      break; 

     /* and so forth... */ 
    } 
} 

タグをInterface Builderで、またはプログラムで設定する必要があります。

+0

それは巨大な方法でしょうか? – jarryd

+0

それは確かに、複製する鍵盤の上にたくさんの鍵があるので見てください。それはmiddaparkaの答えに似ていますが、扱いが簡単です。 – WrightsCS

+0

なぜ私はボタンのタイトルを抽出するつもりです。しかし感謝:) – jarryd