10

テーブルビュー内に、ユーザーが入力するためのいくつかのテキストフィールドがあるすっきりとしたUIがあります。フィールドの1つは、ユーザーの誕生日用です。

ユーザーが誕生日フィールドを選択すると、テキストフィールドを選択するときのさまざまなキーボードと同じように、UIDatePickerを含むビューが表示されるようにしたいと思います。

これはできますか?テキストフィールドが最初のレスポンダーにならないようにする必要があり(キーボードが表示されないようにするため)、以前にキーボードが表示されていなかった場合は、ビューを上にスライドさせてアニメーション化する必要があります。

ビューをモーダルに表示することはオプションでしょうか?もしそうなら、私はそれをどのように行うのですか?ドキュメントから、モーダルビューはまだ画面全体を占めているようです。下の216ピクセル(キーボードとUIDatePickerの高さ)を使用したいだけです。

誰かがこれを行う方法について何かヒントがありますか?

4

4 に答える 4

33

古い質問ですが、最近これを行う正しい方法は、UITextFieldのinputViewをどこかで作成したピッカーに設定することです。このようなもの:

UIPickerView *myPicker = [[UIPickerView alloc] init];
// set picker frame, options, etc...
// N.B. origin for the picker's frame should be 0,0

[myTextField setInputView:myPicker];

UITextFieldを編集しようとすると、iOSは実際にはtextField.inputView、デフォルトでキーボードであるビューを表示するだけです。のサブクラスである限り、任意のビューにすることができますUIView

于 2013-01-08T23:43:41.780 に答える
7

アニメーションについては、DateCellサンプルアプリケーションをご覧ください-http ://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html

いずれにせよ、これを行う適切な方法は、キーボードの代わりにピッカーを表示するようにUITextFieldのinputViewを設定することです。それが意図されていることです。詳細はこちら: キーボードと同じようにピッカービューを表示するにはどうすればよいですか?

乾杯、

オデッド。

于 2011-07-28T14:47:40.263 に答える
5

これを実装するには、UIDatePicker、[完了]、および[キャンセル]ボタンを含むビューを画面の下から上にアニメーション化するだけです。CoreAnimationを使用すると、これは非常に簡単です。

于 2009-12-08T21:44:43.563 に答える
1

キーボードからのユーザー入力を受け入れたくないのに、なぜテキストフィールドを使用しているのですか?代わりに、UILabelサブクラス(touchesBegan / Ended:withEvent:UIDatePickerを表示するメソッドのセットをオーバーライドする)またはUIButton(アクションがUIDatePickerを上にスライドするメソッドである)を使用します。

于 2009-12-08T21:46:25.473 に答える