2016-04-09 19 views
1

Ich benutze vier textFields auf einer Seite. Für die erste und zweite TextFields benutze ich normale Tastatur. Die dritte und vierte sind für Zeit Wert - ich verwende programmgesteuert erstellt DatePicker und setzen Sie es über textField.inputView in der IBAction-Methode.DatePicker über textField.inputView wird nur zum zweiten Mal angezeigt (normale Tastatur wird zum ersten Mal aufgerufen)

Der Punkt ist, dass mein DatePicker nur zum zweiten Mal angezeigt wird - normale Tastatur wird stattdessen zum ersten Mal aufgerufen.

Es passiert nur einmal - wenn ich Seite öffne und auf das Textfeld mit dem Zeitwert zum ersten Mal klicke. Wenn ich zum zweiten Mal auf dieses Textfeld klicke - es funktioniert einwandfrei (mein Datepicker wird angezeigt)

Wie kann ich das beheben?

Das Codebeispiel:

- (IBAction)wakeUpWeekdaysPressed:(id)sender { 
    UIDatePicker *timePicker = [[UIDatePicker alloc] init]; 
    timePicker.datePickerMode = UIDatePickerModeTime; 

    UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)]; 
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(weekdaysTimePickerDoneAction:)]; 
    UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(weekdaysTimePickerCancelAction:)]; 
    UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc] 
             initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    [toolbar setItems:@[cancelButton, flexibleSpace, doneButton]]; 
    // toolbar.barStyle = UIBarStyleBlackTranslucent; 
    toolbar.translucent = YES; 

    [_wakeUpTimeWeekdays setInputView:timePicker]; 
    [_wakeUpTimeWeekdays setInputAccessoryView:toolbar]; 
} 

Antwort

1

Ich löste das Problem auf andere Weise.

Der DatePicker wurde in der IBAction-Methode für das Textfeld initialisiert. Die Hauptursache des Hauptproblems war, dass ich den gesendeten Ereignistyp für die Methode Editing Did End auswählte. Also habe ich das gesendete Ereignis in Editing Did Begin geändert.

Jetzt funktioniert es gut. Vielen Dank.

enter image description here

0

einfach Ihren Code in viewDidLoad schreiben anstelle dieser Methode.

+0

nicht hilft, jetzt entweder picker oder Tastatur Sie zeigen nicht für dieses Textfeld –

+0

(IBAction) wakeUpWeekdaysPressed: (id) sender Verfahren auf eine beliebige Taste aufgerufen klicken? Wenn ja, dann mach das nicht so. fügen Sie diesen Code in viewdidload ein und verzichten Sie auf den ersten Responder. – Lion

+0

bereits gepostet meine eigene Lösung –

Verwandte Themen