2009-03-16 22 views
3

フォームに5つのUITextFieldが追加されています。テキストファイルの1つは、生年月日を入力するためのものです。そのため、デフォルトのキーボードを表示する代わりに、その特定のテキストフィールドをタッチすると、datepickerを表示する必要があります。デフォルトキーボードを非表示にする方法

私は次のことを試してみました:

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    [self showDatePicker];//this is my own function to display datepicker. 
} 

この機能は、日付ピッカーがデフォルトのキーボードも表示され、それが日付ピッカーを隠し日付ピッカーとともに、表示されて呼び出されたとき。私はこの特定のtextfiledのために、デフォルトのキーボードを取り除く方法を知らない。私を助けてください。

+0

この質問はありませんか? – saikamesh

+0

私はこれが可能かどうかを知りたいだけですが、これが不可能な場合には時間を無駄にしません。 – saikamesh

+0

私を助けてください! – saikamesh

答えて

1

これにはUITextFieldを使用しないでください。通常のUITableViewCellを使用し、タップするとdatepickerで新しいUIViewControllerをプッシュします。

+0

このチップをくれてありがとう。私は既にテキストフィールドに透明ボタンを追加しています。そのクリックイベントでは、私はshowDatePicker関数を呼び出しました。透明ボタンがクリックされると、テキストフィールドにはフォーカスが得られません。 – saikamesh

+0

これも達成するように求められました。これが私にこの質問を投稿させたものです。 – saikamesh

+0

必要以上に複雑にしないでください。 UITableViewCellはタップに応答し、.textプロパティを持ちます。キーボードでテキストを入力しない場合は、UITextFieldは必要ありません。 – Schpaencoder

0

最初のレスポンダーの辞任は、キーボードを隠すべきです。私の推測では、textFieldは実際にコードの最初のレスポンダーではないため、辞任するように指示することは効果がありません。おそらく、それを確認するためにNSLogステートメントを挿入する必要があります。

2

これは-textFieldShouldBeginEditing:で処理できます。

このメソッドがNOを返す場合、キーボードは表示されません。

この方法で日付ピッカーを表示し、NOを返すだけです。

3

これは古い質問ですが、私が同じことを探している間、私はここに来ました。

これは

- (void) hideKeyboard: (UIView *) view { 
    NSArray *subviews = [view subviews]; 
    for (UIView *subview in subviews){ 
     if ([subview isKindOfClass:[UITextField class]]) { 
      [subview resignFirstResponder]; 
     } 
     [self hideKeyboard: subview ]; 
    } 
} 

後、私はそれを行うために、より直感的な方法、

[self.view endEditing:YES]; 
1

を発見し、画面に提示ビューの任意の数/ネスティングのために動作します私はちょうどを通じて取り組んできましたこの同じ問題

私たちはいくつかのことを試して、実際にはひどいコードとバグが多くなってしまいました。

抜いて最も簡単なオプションはまだUITextFieldを持っているが、それはピッカーのようなノーリターンボタンを持っていないので、今、私たちは、フィールドを提出する良い方法を見つけようとしているDatePicker

から.inputViewだ設定することですキーボード。

+0

IMHOフィールドを送信する最も良い方法は、 'UITextField'の' inputAccessoryView'を使うことです。 – user500

関連する問題