7

UIにテキストフィールドがあり、選択するとデフォルトのキーボードではなくUIDatePickerが表示されますが、ユーザーが終了したときにピッカーを閉じるようにボタンを設定するにはどうすればよいですか?

4

4 に答える 4

8

私がしているのは、inputViewをカスタムビューとして作成することです。このビューにはUIDatePicker、デリゲートメソッドを呼び出すメソッドに接続された「完了」ボタンが付いたツールバーがあり、を所有するオブジェクトUITextFieldに「キーボード」を呼び出すことで閉じるように指示します。 resignFirstResponder

于 2012-03-05T22:29:15.430 に答える
1

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;
}

これがお役に立てば幸いです。

于 2012-09-28T11:03:15.893 に答える
0

ボタンとを使用してビューを作成し、単独UIDatePickerではなくそのビューを表示するという同様のことを行いました。UIDatePicker次に、ボタンをに接続するだけでIBAction、ビューが外側に移動します。

このように、ボタンはUIDatePickerビューとともに移動し、ユーザーに「接続」されているように見えます。UIViewこれをペン先で定義してaddSubview:、実行時に使用することもできます。

于 2012-03-05T22:29:23.033 に答える
0

これを追加することでこれを解決できます

[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];
}
于 2016-08-30T05:17:11.673 に答える