2016-12-01 11 views
1

最新のXcode 8.2 BetaとSwiftを使用しています。3. DatePickerのいくつかのSwiftサンプルをテキストボックスを使用して表示し、動作させました。私の問題は、キーボードが日付入力テキストボックスをタップすると最初に表示されることです。テキストフィールドに何かを置き、他のフィールドでもう少しリターンすれば、DatePickerはそのように動作します(そのフィールドをタップするとDatePickerが表示され、日付を入力できます)。 Dateフィールドをタップすると、DatePickerだけが表示されます。私の送信イベントは「終了時に終了しました」です。私はキーボードをノックすることができるかどうかを確認するために多くのresigFirstResponderを入れてください。しかし、それらはあまり影響を及ぼさないようです。 TextBoxを現在の日付で初期化しますが、初期化なしで同じ動作をすることは間違いありません。私は2つのテキストフィールド/ DatePickersを持っています。あなたは、テキストフィールドがラインsender.inputView = datePickerでアクティブにしたときに表示する日付ピッカーの原因は何キーボードに日付ピッカーが表示されます

func datePickerChangedSell(sender: UIDatePicker) { 

    resignFirstResponder() 
    let formatter = DateFormatter() 
    formatter.dateStyle = .medium 
    sellDateDisp.text = formatter.string(from: sender.date) 

    resignFirstResponder() 


} 

    @IBAction func sellDateAction(_ sender: UITextField) { 
    let datePicker:UIDatePicker = UIDatePicker() 
    datePicker.datePickerMode = UIDatePickerMode.date 
    sender.inputView = datePicker 
    resignFirstResponder() 
    datePicker.addTarget(self, action: #selector(datePickerChangedSell(sender:)), for: .valueChanged) 
    resignFirstResponder() 
} 

答えて

1

:ここではそれらのいずれかの私のコードです。 IBactionではなく、viewDidLoadで行う必要があります。

テキストフィールドを編集し、別のフィールドにスワップしてから元に戻す必要がある理由は、テキストフィールドのinputViewを割り当てているsellDataActionメソッドを呼び出す必要があるからです。

+0

ありがとうございました。 sender.InputViewをviewDidLoadまで移動しようとしましたが、送信者についての未解決の参照がありました。 viewDidLoadの括弧の中に "_ sender:UITextField"を追加しようとしましたが、それはスーパークラスのメソッドからのオーバーライドについて何か言いました。あなたの提案をより良く理解しようとします。 – flashgordon

+0

テキストビューを管理するビューコントローラで、テキストビューのコンセントを作成する必要があります。ストーリーボードを開き、アクセサリエディタでView Controllerのソースファイルを開きます。 Ctrlキーを押しながらテキストビューからソースファイルにドラッグし、テキストビューに名前を付けます。次に、テキストビューの 'inputView'を設定する呼び出しでその名前を参照してください –

+0

Duncan、ありがとう、私はそれを試してみましょう。私は最初に別のビルドで試してみると思います。私はここに多くのオブジェクトを持っています。あなたが1つを作成しても機能しない場合、取り消すことは困難です。それを正しく取得し、私の製品ビルドに実装してください。 – flashgordon

0

ダンカン、助けてくれてありがとう、私はこれを考え出し、あなたは私をそこに連れて来ました。答えとしてあなたの答えに印をつけようとしましたが、それは私に許されませんでした。私の問題は、「編集が始まった」ではなく、「編集終了」としてアクションを作成したことでした。教科書を削除してアクションを再追加すると、テキストキーボードのないDatePickerが初めて表示されました。 1つの質問は、編集終了を編集開始に変更しただけですか?編集オプションがすべて表示されている矢印付きの円が表示されますが、変更することはできませんでした。テキストボックスをドロップして再追加しなければならないようでした。もう1つの参照点。私はviewDidLoadメソッドの中で直接テキストボックスに接続することはできません。それは私が他のどこかに接続することを主張した。

+0

興味深い副作用の1つです。編集終了私はその日付をタップしたときでさえ、私がセッションに入力した最後の日付を保存します。私が編集開始に行ったとき、次回その日付の教科書をタップするときに私の初期値が置かれます。 – flashgordon

+0

他の人がこの問題を抱えている可能性があるため、End Endがデフォルトです。 – flashgordon

関連する問題