7

私は以下のようなものを見ています

ここに画像の説明を入力 日付ピッカー ビューは常にそこにあり、[日付を入力] がクリックされたときにポップアップ表示され、背景をクリックすると日付ピッカーがダウンするようにするにはどうすればよいですか

日付ピッカービューを慣例にしたばかりですが、これを行う方法がわかりません。

4

4 に答える 4

13

Ok。アニメーションを使用した要件のサンプル コードを次に示します。

- (void) showView
{
    [self.view addSubview:yourDatePickerView];
        yourDatePickerView.frame = CGRectMake(0, -250, 320, 50);
        [UIView animateWithDuration:1.0
                         animations:^{
                             yourDatePickerView.frame = CGRectMake(0, 152, 320, 260);
                         }];
}

DatePickerView を非表示にする方法は次のとおりです。

- (void) hideView
{
    [UIView animateWithDuration:0.5
                         animations:^{
                             yourDatePickerView.frame = CGRectMake(0, -250, 320, 50);
                         } completion:^(BOOL finished) {
                             [yourDatePickerView removeFromSuperview];
                         }];
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if(textField == yourDateTextField)
    {
         [self showView];
         return NO; // preventing keyboard from showing
    }
    return YES;
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if(textField == yourDateTextField)
    {
         [self hideView];
    }
}

それだけです。

于 2013-03-23T13:29:30.177 に答える
2

デリゲート メソッドでテキスト フィールドを識別する必要があります。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if(textField == DATE_TEXT_FIELD)
    {
             //Display date picker
    }
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{

        if(textField == DATE_TEXT_FIELD)
        {
                 //Hide date picker
            }
}
于 2013-03-23T13:27:50.367 に答える
1
  • UIViewこの日付ピッカー ビューを含む参照を1 つ作成します。
  • datePickerContainerViewこれをtextField.inputView プロパティに割り当てます。
  • 次に、メソッドに割り当てtextfield.delegateself実装します textFieldShouldReturn。そのメソッドで、この行を書きます

    [textField rejectFirstResponder];

    はいを返します。

そのテキストフィールドをタップすると、inputview プロパティの設定に従って、デフォルトのキーボードの代わりに datepicker ビューが読み込まれます。

于 2013-03-23T13:28:28.690 に答える
0

datePicker のコードを実行する前に、必ず次のコード行を入力してください。

    [textField resignFirstResponder];

ご存知のように、キーボードは textField のデフォルトのファーストレスポンダです。そのため、最初に再署名してからピッカーのコードを作成する必要があります。そうしないと、キーボードもポップアップします。

于 2015-09-22T08:38:02.440 に答える