忍者ブログ

[PR]

2024年04月20日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

テキストフィールド間の移動

2009年01月21日
ビュー内にテキストフィールドが複数ある場合、何も設定をしていないと、ユーザーは入力したいテキストフィールドをタップし、入力を行うという作業を繰り返すことになります。それでも動くので問題はないのですが、あまりスマートな入力方法とは言えません。そこで何か良い方法は用意されていないものかと調べてみました。そこで行き着いたのがキーボードのリターンボタンを使う方法です。XcodeとInterface Builderを行ったり来たりすることになりますが、わかりやすいように手順を追って説明すると次のようになります。例では2つの値xとyを入力するテキストフィールドがあると思ってください。

1.まずXcodeでビューのテキストフィールドと対応するポインタを、テキストフィールドの数だけヘッダファイルのビューコントローラーの中括弧内にIBOutretを頭に付けて記述します。
例:IBOutlet UITextField *xValueTextField;

2.先ほどの中括弧の終わった後で@endより前の部分にプロパティを記述します。先ほどのポインタと対応するようにします。
例:@property (nonatomic, readonly) UITextField *xValueTextField;

3.メソッドファイルの@implementationより下の部分に@synthesizeを記述します。これも名付けたテキストフィールドの数だけ行います。
例:@synthesize xValueTextField;

4.dealloc関数内にポインタの解放を記述します。これも名付けたテキストフィールドの数だけ行います。
例:[xValueTextField release];

5.少なくともヘッダファイルを保存してからInterface Builderでビューのnibファイルを開きます。

6.それぞれのテキストフィールドを紐付けし、先ほど付けたポインタ名とそれぞれのテキストフィールドを対応させます。次にはじめに入力を行うテキストフィールド(例ではxValueTextField)をクリックします。

7.Attributes InspecterのText Input TraitsにあるReturn KeyをNextにします。これでこのテキストフィールドをタップした際、表示するキーボードに「改行」ではなく「次へ」というボタンが表示されます。

8.一度Interface Builderを閉じてXcodeに戻ります。変更内容は保存しておきましょう。

9.ビューのヘッダに、関数の宣言を追加します。関数の名前は好きなものを付けてください。
例:-(IBAction)xNext;

10.メソッドファイルに関数の本体を追加します。この例では次のテキストフィールド(yValueTextField)を入力可能状態にする命令を入れてあります。
例:

-(IBAction)xNext {

[yValueTextField becomeFirstResponder];

}


11.やはり少なくともヘッダファイルを保存した後、Interface Builderを開いて先ほどのビューコントローラーの紐付け用のウインドウ(黒っぽい色のもの)を表示します。

12.Received Actionsに先ほど追加した命令があるので、はじめに入力を行うテキストフィールド(例ではxValueTextField)へ紐付けします。この時、イベントの種類としてDid End On Exitを選びます。

以上で操作は完了です。こうすることで、例の場合ははじめのテキストフィールドでキーボードの「次へ」をタップしたときにxNext関数が実行され、yValueTextFieldが入力可能状態となり、入力用のキーボードが表示されます。なお、はじめに入力状態にするテキストフィールドの指定は、例の場合だとViewWillAppear関数に、

[xValueTextField becomeFirstResponder];


と書いておけばビューが表示された時点でxValueTextFieldが入力可能状態になります。
PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback
トラックバックURL: