UIにテキストフィールドがあり、選択するとデフォルトのキーボードではなくUIDatePickerが表示されますが、ユーザーが終了したときにピッカーを閉じるようにボタンを設定するにはどうすればよいですか?
4 に答える
私がしているのは、inputViewをカスタムビューとして作成することです。このビューにはUIDatePicker
、デリゲートメソッドを呼び出すメソッドに接続された「完了」ボタンが付いたツールバーがあり、を所有するオブジェクトUITextField
に「キーボード」を呼び出すことで閉じるように指示します。 resignFirstResponder
。
UIView(つまり、customDatePickerView)を作成し、そのビューで、xibに日付ピッカーと完了ボタンおよびキャンセルボタンを作成します。テキストフィールドデリゲート:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if (textField == textfieldName) {
[textfieldName resignFirstResponder];
//show the view
self.customDatePickerView.hidden = NO;
}
}//dismisses keyboard
日付ピッカー値の関数が変更されました
- (IBAction)onDatePickerClick:(id)sender {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/YYYY"];
NSDate *selectedDate = [self.wellRecordDatePicker date];
NSString *recordDate = [dateFormatter stringFromDate:selectedDate];
self.yourTextfieldName.text = recordDate;
}
- (IBAction)onDoneBtnClick:(id)sender
{
self.customDatePickerView.hidden = YES;
}
- (IBAction)onCancelBtnClick:(id)sender
{
self.customDatePickerView.hidden = YES;
}
これがお役に立てば幸いです。
ボタンとを使用してビューを作成し、単独UIDatePicker
ではなくそのビューを表示するという同様のことを行いました。UIDatePicker
次に、ボタンをに接続するだけでIBAction
、ビューが外側に移動します。
このように、ボタンはUIDatePicker
ビューとともに移動し、ユーザーに「接続」されているように見えます。UIView
これをペン先で定義してaddSubview:
、実行時に使用することもできます。
これを追加することでこれを解決できます
[self.view endEditing:YES];
タップジェスチャでこれを追加したように、日付ピッカーを閉じたい場所にこれを追加します
viewDidLoadでタペスチャを追加しました
UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; // Declare the Gesture.
gesRecognizer.delegate = self;
[self.view addGestureRecognizer:gesRecognizer];
viewdidLoadにこれを追加した後、ジェスチャーレコグナイザーを検出するためにこのメソッドを追加します
- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{
NSLog(@"Tapped");
[self.view endEditing:YES];
}